Cortex M7-TRM 翻译系列之ITM(十二)

12 指令跟踪宏单元(ITM)

12.1 ITM概述

仪器跟踪宏单元(ITM)是可选的、由应用程序驱动的跟踪源,支持类似 printf 打印风格的调试手段,可用于跟踪操作系统与应用程序事件,并输出系统诊断信息。

12.2 ITM功能描述

ITM 以数据包形式生成跟踪信息,共有四类数据源可产生数据包。若多个数据源同时输出数据包,ITM 会仲裁数据包的输出顺序。四类数据源的优先级从高到低依次为:

  • 软件跟踪:软件可以直接写入ITM激励寄存器去生成跟踪数据包
  • 硬件跟踪:数据包由DWT生成,再经由ITM对外输出
  • 时间戳:数据包会附带相对时间戳。ITM 内置一个 21 位计数器用于生成时间戳,该计数器由处理器时钟驱动计数。
  • 全局系统时间戳:可选采用系统级 64 位计数值生成时间戳;该计数值同样用于为 ETM 跟踪流插入时间戳,实现粗粒度的多模块跟踪数据关联比对。

12.3 ITM程序模型

下表列出了本处理器专属实现的 ITM 寄存器。其余寄存器的相关说明请参阅《Arm® v7-M 架构参考手册》。

根据处理器的硬件实现方案,部分 ITM 寄存器可能未集成。读取任何硬件未实现的寄存器时,读出值恒为 0。

注意:

在配置或使用 ITM 之前,必须置位调试异常与监控控制寄存器(DEMCR)的 TRCENA 位。

若 ITM 跟踪流需要同步数据包,则必须在 DWT 中配置同步数据包发送速率。

地址范围 寄存器名称 读写属性 复位值 功能说明
0xE0000000 ~ 0xE000007C ITM_STIM0 ~ ITM_STIM31 可读可写 (RW) --- 0~31 号激励端口寄存器
0xE0000E00 ITM_TER 可读可写 (RW) 0x00000000 跟踪通道使能寄存器
0xE0000E40 ITM_TPR 可读可写 (RW) 0x00000000 ITM 跟踪权限寄存器
0xE0000E80 ITM_TCR 可读可写 (RW) 0x00000000 跟踪控制寄存器
0xE0000EF0 ITM_ITATRDY 只读 (RO) 未定义 集成测试模式:ATB 就绪状态读寄存器
0xE0000EF8 ITM_ITATVAL 只写 (WO) --- 集成测试模式:ATB 有效信号写寄存器
0xE0000F00 ITM_TCTRL 可读可写 (RW) 0x00000000 集成测试模式控制寄存器
0xE0000FB0 ITM_LAR 只写 (WO) --- ITM 锁访问寄存器
0xE0000FB4 ITM_LSR 只读 (RO) 未定义 ITM 锁状态寄存器
0xE0000FD0 PID4 只读 (RO) 0x00000004 外设识别寄存器组
0xE0000FD4 PID5 只读 (RO) 0x00000000 保留
0xE0000FD8 PID6 只读 (RO) 0x00000000 保留
0xE0000FDC PID7 只读 (RO) 0x00000000 保留
0xE0000FE0 PID0 只读 (RO) 0x00000001 外设识别寄存器 0
0xE0000FE4 PID1 只读 (RO) 0x000000B0 外设识别寄存器 1
0xE0000FE8 PID2 只读 (RO) 0x0000000B 外设识别寄存器 2
0xE0000FEC PID3 只读 (RO) 0x00000000 外设识别寄存器 3
0xE0000FF0 CID0 只读 (RO) 0x0000000D 组件识别寄存器组
0xE0000FF4 CID1 只读 (RO) 0x000000E0 组件识别寄存器 1
0xE0000FF8 CID2 只读 (RO) 0x00000005 组件识别寄存器 2
0xE0000FFC CID3 只读 (RO) 0x000000B1 组件识别寄存器 3

备注:

特权模式下可完整访问全部 ITM 寄存器。用户模式中,所有寄存器均支持读取,但仅激励寄存器与跟踪使能寄存器允许写入,且写入的前提是跟踪权限寄存器对应位置 1。用户模式下对 ITM 寄存器执行非法写操作时,写入数据会被硬件丢弃。

12.3.1 ITM跟踪特权寄存器

| 项目 | 内容 |
| 功能用途 | 供操作系统管控用户代码可访问的激励端口。 |
| 使用约束 | 仅能在特权模式下对该寄存器执行写操作。 |
| 配置版本 | 若硬件实现中集成了 ITM 模块,则该寄存器可用。 |

属性说明 见下表
位域 名称 功能说明
31:4 --- 保留位
3:0 PRIVMASK 中断线路总数,以 32 路为一组划分:
BIT0 激励端口7:0
BIT1 激励端口15:8
BIT2 激励端口23:16
BIT3 激励端口31:24

该部分内容需看ARM v7架构手册,TRM描述的太少

相关推荐
Dlrb12113 天前
ARM---I2C协议时序详解以及IMX6ULL使用I2C协议与AT24C02,LM75A芯片通信详解与示例代码
嵌入式硬件·arm·lm75a·i2c协议·at24c02·i2c时序
Dlrb12115 天前
ARM---IMX6ULL定时器详解与应用:EPIT与GPT定时器,高精度延时函数
arm开发·gpt·arm·定时器·epit·高精度延时
Dlrb12116 天前
ARM -IMX6ULL的中断系统、GIC、CP15协处理器详细讲解
arm开发·arm·imx6ull·中断·gic·cp15·协处理器
Dlrb12116 天前
ARM---I.MX6ULL时钟系统详解、时钟树、系统时钟配置等
单片机·嵌入式硬件·arm·imx6ull·pll·时钟树·cortex-a7
m0_715646768 天前
20260720
linux·arm
Dlrb12118 天前
ARM--IMX6ULL的SDK学习,BSP开发工程管理,以及链接脚本与Makefile的编写
单片机·嵌入式硬件·arm·sdk·链接脚本·i.mx6ull·cortex-a7
凉、介9 天前
Virtio(三):Virtqueue 建立与 Buffer 提交
笔记·学习·嵌入式·arm·虚拟化·virtio
秉承初心11 天前
CPU架构深度对比:x86 vs ARM 异同、优劣与全场景市场分析
arm·x86·cpu架构
Dlrb121112 天前
ARM架构---Cortex系列寄存器,重要内部模块,工作模式,异常处理等
arm开发·arm·指令集·arm工作模式·soc片上系统·ram与rom