调试核心

ARM Cortex-M内核调试

TPIU、ITM和DWT是CoreSight调试架构中的三个关键组件;

DWT(Data Watchpoint and Trace)——数据观察与跟踪单元‌

DWT主要用于‌实时监控程序运行时的数据行为‌。它能够:

设置数据访问断点(读/写特定内存地址)
监控程序计数器(PC)的采样,用于统计指令执行次数
计数器功能:如循环次数、指令周期数、异常进入次数等
支持事件触发,用于性能瓶颈定位(如某段代码执行耗时过长)
DWT是性能分析的核心,尤其在资源受限的嵌入式系统中,无需外部探针即可获取关键运行指标。

ITM(Instrumentation Trace Macrocell)——仪器化跟踪宏单元

ITM负责‌生成和传输调试信息流‌,常与DWT配合使用:

  • 通过软件调用(如ITM_SendChar())向调试器发送自定义日志、变量值或状态消息
  • 支持格式化输出(整数、字符串、浮点数),便于开发者实时观察程序内部状态
  • 与DWT共享同一个跟踪通道,实现“数据+日志”双轨调试

ITM是“printf调试”的硬件实现,极大提升了嵌入式开发中动态调试的效率,避免了传统串口打印的性能干扰。

TPIU(Trace Port Interface Unit)——跟踪端口接口单元‌

TPIU是‌调试数据的输出控制器‌,作用是:

将DWT和ITM产生的高速跟踪数据进行格式化和打包
通过有限的引脚(如1~4线)将数据串行输出到外部调试器(如JTAG/SWD接口)
支持数据压缩与同步,确保在低带宽通道下仍能稳定传输
没有TPIU,DWT和ITM产生的数据就无法被外部工具(如Keil、IAR、OpenOCD)接收和解析,它是调试信息通往开发环境的“桥梁”。

DWT‌ 检测到关键事件(如某变量被修改)→ 生成跟踪事件

ITM‌ 接收软件注入的日志信息(如“传感器读数:123”)→ 打包成数据包

TPIU‌ 收集来自DWT和ITM的数据流 → 压缩并经SWO引脚输出

调试工具‌(如IDE)接收数据 → 实时显示性能曲线、变量变化、日志输出

DWT负责“看数据”,ITM负责“说日志”,TPIU负责“传出去”。

英文缩写 中文名称 功能
‌ETM(Embedded Trace Macrocell)‌ 嵌入式跟踪宏单元 功能‌:监控处理器指令执行,压缩传输指令信息。
应用场景‌:分析程序执行流程,定位性能瓶颈。
PTM(Program Trace Macrocell) 程序跟踪宏单元 功能‌:监控处理器运行状况,压缩传输指令信息。
应用场景‌:与ETM协同工作,提供更全面的跟踪数据。
STM(System Trace Macrocell) 系统跟踪宏单元 功能‌:捕捉系统事件信息,以数据跟踪形式传输。
应用场景‌:跟踪系统级事件,如中断、异常等。
DAP(Debug Access Port) 调试访问端口 功能‌:连接外部调试工具的物理接口,允许访问芯片上的CPU、CoreSight等。
应用场景‌:作为调试工具与芯片之间的桥梁。
ETB(Embedded Trace Buffer) 嵌入式跟踪缓冲区 功能‌:芯片内RAM,存储捕捉到的跟踪信息。
应用场景‌:临时存储跟踪数据,容量有限。
TMC(Trace Memory Controller) 跟踪内存控制器 功能‌:可配置的跟踪内存控制器,支持ETB、ETR和ETF模式。
应用场景‌:灵活配置跟踪数据存储方式。
ETR(Embedded Trace Router) 嵌入式跟踪路由器 功能‌:将跟踪数据存储到系统内存。
应用场景‌:大容量跟踪数据存储。
ETF(Embedded Trace FIFO) 嵌入式跟踪FIFO 功能‌:缓冲数据输出,平滑数据输出速率。
应用场景‌:处理突发大量跟踪数据。
CTI/CTM(Cross Trigger Interface/Module) 交叉触发接口/模块 功能‌:多核协同调试的关键技术。
应用场景‌:协调多核调试,确保调试信息同步。
Replicator‌ 复制器 功能‌:将单个输入复用到多个输出。
应用场景‌:实现跟踪信息的多路输出。
Trace Funnel 跟踪集线器 功能‌:将多个跟踪源的信息组合成单个流输出。
应用场景‌:整合多源跟踪数据。
Synchronous 1:1 ATB Bridge 同步1:1高级跟踪总线桥 功能‌:同步1:1的高级跟踪总线桥接。
应用场景‌:实现跟踪数据的同步传输。