80 lines
2.3 KiB
Markdown
80 lines
2.3 KiB
Markdown
# K1 设备日志导出(J-Link RTT)
|
||
|
||
## 用途
|
||
|
||
固件运行时将启动/关机、触摸、按键、UI 切换、异常等事件写入 RAM 环形缓冲(约 4KB / 32 条),并通过 SEGGER RTT 实时输出。现场复现问题后,用 J-Link 一键导出日志文件发回分析。
|
||
|
||
## 前置条件
|
||
|
||
- J-Link 调试器 + SWD 连接设备
|
||
- Python 3.8+
|
||
- 依赖:`pip install pylink-square`
|
||
- 已烧录包含 `app_log` 模块的固件
|
||
|
||
## 操作步骤
|
||
|
||
1. 设备上电,复现问题(例如模式选择页触摸无响应)。
|
||
2. PC 连接 J-Link,**不要**随意 Reset(会丢失 RAM 日志;若必须复位,请先导出或复现后再导出)。
|
||
3. 在项目 `tools` 目录执行:
|
||
|
||
```bash
|
||
python rtt_log_dump.py --out problem.log
|
||
```
|
||
|
||
4. 将生成的 `problem.log` 发送给研发分析。
|
||
|
||
## 其他 RTT 命令(RTT Viewer 终端输入)
|
||
|
||
| 命令 | 说明 |
|
||
|------|------|
|
||
| `log dump` | 导出 RAM 中全部历史日志 |
|
||
| `log clear` | 清空 RAM 日志 |
|
||
| `log status` | 查看 boot 次数、条数、溢出、当前 UI 页 |
|
||
| `log level D` | 开启 Debug 级(含触摸细节);`I` 仅 Info 以上 |
|
||
| `sys reset` | MCU 软件复位(自动重新开机,**RAM 日志会丢失**) |
|
||
|
||
或通过脚本(**复位后脚本会自动 `go()` 释放 CPU,避免 J-Link 停核黑屏**):
|
||
|
||
```bash
|
||
python rtt_reset.py
|
||
```
|
||
|
||
若固件较旧无 `sys reset`,脚本会自动用 J-Link 硬件复位兜底。
|
||
|
||
## 日志格式
|
||
|
||
```
|
||
[tick_ms][LVL][CAT] message key=val ...
|
||
```
|
||
|
||
类别 CAT:`BOOT` `PWR` `UI` `TP` `KEY` `MSG` `NVM` `TASK` `ERR` `ADC`
|
||
|
||
## 配套工具
|
||
|
||
- 屏幕截图:`python rtt_lcd_capture.py --out screen.png`
|
||
- 日志导出:`python rtt_log_dump.py --out problem.log`
|
||
- 远程复位:`python rtt_reset.py`
|
||
|
||
## 触摸问题排查要点
|
||
|
||
导出后重点 grep:
|
||
|
||
- `[TP]` — raw/cal 坐标、irq 状态
|
||
- `[MSG] id=12` — 触摸消息是否发出
|
||
- `[UI] mode_select miss` — UI 命中测试是否失败
|
||
|
||
## 已验证(2026-08-31)
|
||
|
||
烧录:`cspybat` + `C:\Temp\k1flash\YNGJ-GT1-M.out` 下载,J-Link reset/run 后约 4s 开机。
|
||
|
||
日志导出示例(`python rtt_log_dump.py --out test.log`):
|
||
|
||
```
|
||
[00185][I][BOOT] app_log init boot=1
|
||
[00224][I][NVM ] init ok ver=2
|
||
[00224][I][BOOT] main init done ui=Idle
|
||
[00224][I][PWR ] auto power_on
|
||
[00401][I][PWR ] periph ready send POWER_ON
|
||
[00500][I][MSG ] id=0 hi=0 lo=0
|
||
```
|