再上一篇:16.2 跟踪组件:数据观察点与跟踪(DWT)
上一篇:16.3 跟踪组件:仪器化跟踪宏单元(ITM)
主页
下一篇:16.5 跟踪组件:跟踪端口接口单元(TPIU)
再下一篇:16.6 闪存地址重载及断点单元(FPB)
文章列表

16.4 跟踪组件:嵌入式跟踪宏单元

《Cortex-M3 权威指南》,嵌入式处理器开发教程。

ETM功能块用于提供指令跟踪(即指令执行的历史记录),它是个选配件,不一定出现在所有的 CM3产品上。当它使能后,并且在跟踪操作开始后,它会产生指令跟踪数据包。ETM中也有一个 FIFO 缓冲区,为跟踪数据流的捕捉提供够用的时间。

为了减少产生的数据量,ETM 并不会一直忙不迭地输出处理器当前正在执行的地址。通常它只 输出有关程序执行流的信息,并且只有在需要时才输出完整的地址(例如,当一个跳转发生时)。 因为调试主机也有一份二进制映像的拷贝,它可以使用此拷贝来重建指令的执行序列。

ETM也与其它的调试组件互相交互。例如,它与 DWT的比较器就有关系:DWT的比较器可用于 产生 ETM的触发信号,或者控制跟踪的启动与停止。

与传统 ARM 处理器的 ETM 不同的是,CM3 的 ETM 没有自己的地址比较器,而是由 DWT 的比较 器代为完成。事实上,CM3的 ETM与传统 ARM的 ETM有很大的区别。
欲使用 ETM,必须执行下述的建立步骤(由调试器及其周边工具完成)

1. 把 DEMCR.TRCENA位置位(DEMCR寄存器的定义参见表 15.2或 D.37)。

2. 解锁 ETM以编程它的寄存器:往 ETMLOCK_ACCESS寄存器中写 0xC5AC_CE55。

3. 编程 ATBID 寄存器(ATID),赋 予 ETM 一个唯一的标识,以便把它的跟踪数据包与其它跟 踪源的跟踪数据包分开。

4. ETM 的 NIDEN 输入信号必须为高电平。该信号的实现是取决于具体的器件的,还需要参考 该器件的数据手册。

5. 编程 ETM控制寄存器组以产生跟踪数据。