1. ARM ETM架构概述
嵌入式跟踪宏单元(ETM)是ARM处理器调试体系中的关键组件,它通过实时捕获处理器执行的指令流,为开发者提供非侵入式的程序执行跟踪能力。与传统的断点调试不同,ETM不会影响处理器正常运行时序,这使得它成为分析实时系统行为和性能瓶颈的理想工具。
ETMv3架构采用模块化设计,主要包含以下几个功能单元:
- 跟踪生成单元:负责捕获处理器流水线中的指令执行信息
- 地址比较器:用于设置跟踪触发条件(如特定地址范围)
- 数据比较器:支持基于数据值的跟踪触发
- FIFO缓冲:解决跟踪数据生成速率与输出带宽不匹配问题
- 跟踪端口接口:将压缩后的跟踪数据输出到外部分析设备
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. ETM寄存器配置详解
2.1 配置代码寄存器(ETMCCR)
ETMCCR(地址0x00)是只读寄存器,反映ETM硬件实现的具体配置。其关键位域包括:
code复制31 28 27 26 25 24 23 22 20 19 17 16 15 13 12 8 7 4 3 0
+-----+--+--+--+--+--+-----+-----+--+-----+-----+-----+-----+
|ETMID|R |CP|TS|CID|FF|EXOUT|EXIN |SQ|CNTR|MMAP |DVCMP|ADDR |
+-----+--+--+--+--+--+-----+-----+--+-----+-----+-----+-----+
各字段功能说明:
- ETMID(bit31):ETM ID寄存器存在标志
- CP(bit27):协处理器和内存映射访问支持
- TS(bit26):跟踪启停模块存在标志
- CID(bit25-24):上下文ID比较器数量
- FF(bit23):FIFOFULL逻辑存在标志
- EXOUT(bit22-20):外部输出数量
- EXIN(bit19-17):外部输入数量(0-2个)
- SQ(bit16):序列器存在标志
- CNTR(bit15-13):计数器数量(通常为1个)
- MMAP(bit12-8):内存映射解码器数量
- DVCMP(bit7-4):数据值比较器数量
- ADDR(bit3-0):地址比较器对数
实际开发中,应首先读取ETMCCR确认硬件支持的功能模块,
