作为一名在嵌入式开发领域摸爬滚打多年的工程师,我深知日志分析在调试过程中的重要性。今天我将分享UNISOC8910平台上两个核心调试工具——coolwatcher和ArmTracer的实战经验,这些内容都是我在实际项目中反复验证过的干货。
UNISOC8910作为一款广泛应用于物联网设备的芯片平台,其日志系统分为AP(Application Processor)和CP(Cellular Processor)两部分。AP日志主要记录应用层和操作系统层面的运行信息,而CP日志则专注于蜂窝网络相关的通信细节。掌握这两类日志的抓取技巧,能极大提升我们定位问题的效率。
coolwatcher和ArmTracer都是UNISOC提供的免安装工具,直接从官网下载压缩包解压即可使用。但有几个关键点需要注意:
版本选择:建议使用厂商提供的最新版本,旧版本可能存在解析不全或功能缺失的问题。我曾在项目中使用过旧版coolwatcher,结果漏掉了关键的异常日志,导致问题排查走了弯路。
路径规范:工具路径中绝对不能包含中文或特殊字符。有次我把工具放在"调试工具/8910"这样的路径下,结果工具完全无法启动,浪费了半天时间排查。
权限要求:在Win10/Win11系统上,建议右键选择"以管理员身份运行",避免因权限不足导致端口访问失败。
虽然官方文档说coolwatcher支持XP到Win10,但根据我的实际测试:
| 工具 | 推荐系统 | 最低内存 | 处理器要求 |
|---|---|---|---|
| coolwatcher | Win10 64位 | 8GB | 四核i5以上 |
| ArmTracer | Win7及以上 | 4GB | 双核以上 |
特别提醒:如果使用虚拟机环境,务必确保USB控制器设置为USB3.0模式,并启用所有USB兼容性选项。我曾遇到虚拟机中ArmTracer无法稳定抓包的问题,调整这些设置后得到解决。
正确的驱动安装是日志抓取的前提。连接设备后,在设备管理器中应该看到如下端口:
如果缺少任何一个端口,建议:
启动coolwatcher_usb.exe后,首次使用需要正确配置:
这里有个容易出错的地方:COM号可能会随连接顺序变化。我的做法是先在设备管理器确认端口号,再填写到工具中。
成功连接后,Trace Tool窗口提供多个控制按钮:
在设置界面中,有几个关键配置项:
python复制# 伪代码展示配置逻辑
config = {
"auto_save": True, # 必须开启
"file_type": "trc", # 文本格式更易读
"max_size": 50, # 单位MB,建议50-100
"save_path": "D:\\logs", # 专用日志目录
"pcap": True # 网络分析必备
}
问题场景:点击开始后无日志输出
解决方案:
code复制AT+QDBGCFG="tracecfg"
code复制AT+QDBGCFG="tracecfg",0,2
日志解析异常:如果看到大量无法解析的乱码,通常是工具版本过旧。建议联系FAE获取最新版本,我遇到过旧版无法解析RTOS调度日志的情况。
启动ArmTracer.exe后的标准操作流程:
特别注意:路径中不能有空格!我曾用"CP Logs"作为目录名,导致日志无法保存。
对于开机阶段的网络注册问题,需要配置自动抓取功能:
code复制DeviceList=Quectel USB CP Log Port
DeviceSel=Quectel USB CP Log Port
测试方法:重启模组,观察工具是否自动开始记录日志。如果成功,会看到实时的网络注册消息打印。
CP日志中需要特别关注的关键信息:
| 日志关键字 | 含义 | 典型值 |
|---|---|---|
| +CFUN | 功能状态 | 1-全功能, 0-最小功能 |
| +CEREG | 网络注册状态 | 1-已注册, 2-正在注册 |
| +CGREG | GPRS注册状态 | 同上 |
| RSSI | 信号强度 | -50到-113 (越大越好) |
示例分析网络注册失败的日志片段:
code复制[15:23:45] +CFUN: 1
[15:23:46] +CEREG: 2
[15:23:50] +CEREG: 0
[15:23:50] RSSI: -105
这表明设备尝试注册网络失败,可能原因是信号太弱(RSSI=-105)。
当系统崩溃时,dump文件是分析问题的金钥匙。导出步骤:
code复制AT+QDBGCFG="DUMPCFG",0
常见问题处理:
在coolwatcher的设置中勾选"Save Pcap"后,会自动生成可用于Wireshark分析的网络抓包文件。这些文件保存在cap子目录下,命名格式为:
code复制YYYYMMDD_HHMMSS_<随机数>.pcap
分析网络问题的三个关键点:
问题1:coolwatcher无法启动
可能原因:
问题2:ArmTracer日志不连续
解决方案:
高效的日志分析需要掌握:
当日志量很大时,可以:
我在处理一个内存泄漏问题时,通过调整日志等级聚焦内存相关消息,最终发现是某个任务没有正确释放信号量。
将这两个工具融入日常开发流程的建议:
标准化日志目录结构:
code复制/项目名称
/AP_Logs
/YYYYMMDD
/CP_Logs
/YYYYMMDD
/Dumps
自动化脚本示例(Python):
python复制import subprocess
import datetime
def start_logging():
date_str = datetime.datetime.now().strftime("%Y%m%d")
ap_log_dir = f"D:/logs/{date_str}/AP"
cp_log_dir = f"D:/logs/{date_str}/CP"
# 启动coolwatcher
subprocess.Popen(["coolwatcher_usb.exe", f"-ap_port=COM5", f"-out={ap_log_dir}"])
# 启动ArmTracer
subprocess.Popen(["ArmTracer.exe", f"-port=COM6", f"-dir={cp_log_dir}"])
经过多个项目的实践验证,这套日志收集和分析方法能显著提高调试效率。特别是在处理偶发性问题时,完备的日志记录往往是解决问题的关键。