1. ARM TMC寄存器架构解析
在ARM调试系统中,Trace Memory Controller(TMC)作为关键组件,其寄存器编程模型直接影响调试数据的采集效率与可靠性。TMC寄存器采用32位地址空间映射,按功能可分为五大类:
-
核心控制寄存器组(0x004-0x034)
- RSZ(0x004):RAM容量配置
- STS(0x00C):状态监控
- CTL(0x020):全局使能控制
- MODE(0x028):工作模式选择
-
数据指针寄存器组(0x014-0x03C)
- RRP/RWP(0x014/0x018):读写指针基础地址
- RRPHI/RWPHI(0x038/0x03C):高位地址扩展(ETR专用)
-
触发与水位线寄存器(0x01C-0x034)
- TRG(0x01C):触发计数器
- BUFWM(0x034):缓冲区水位阈值
-
AXI总线控制寄存器(0x110-0x11C)
- AXICTL(0x110):AXI传输参数配置
- DBALO/DBAHI(0x118/0x11C):DMA地址设置
-
身份识别寄存器组(0xFC8-0xFFC)
- PERIPHID0-7:外设ID
- COMPID0-3:组件ID
关键特性:所有寄存器访问必须遵守对齐规则。对于64位及以上位宽的内存配置(通过DEVID.MEMWIDTH获取),地址必须按数据宽度对齐(如128位宽时地址低4位必须为0)。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心寄存器深度剖析
2.1 RAM Size Register(RSZ, 0x004)
该寄存器决定TMC可用内存空间,其配置直接影响调试数据捕获量:
c复制// 典型配置示例(1KB缓冲区)
*(volatile uint32_t *)0x400004 = 0x100; // 1KB = 256 words (256*4=1024)
位域详解:
- [30:0] RSZ:以32位字为单位的缓冲区大小
- [31] 保留位(必须写0)
配置约束:
- ETB/ETF模式下为只读,值由RTL参数MEM_SIZE固定
- ETR模式下可编程
