共5条
1/1 1 跳转至页
嵌入式跟踪宏单元(ETM)简介
嵌入式跟踪宏单元
粗略的讲,ETM的作用就是记录处理器做的事情并送到外面的调试器。
由于微控制器带有大量的片内存储器,因此不能简单地通过观察外部管脚来确定处理器核是如何运行的。ETM对深嵌入处理器内核提供了实时跟踪能力。它向一个跟踪端口输出处理器执行的信息。软件调试器允许使用JTAG接口对ETM进行配置并以用户易于理解的格式显示捕获到的跟踪信息。ETM直接连接到ARM内核而不是主AMBA 系统总线。
ETM管脚:
TRACECLK
PIPESTAT[2:0]
TRACESYNC
TRACEPKT[3:0]
EXTIN[0]
面对不断增长的处理器频率,先来看一下跟踪技术的一些最新发展。首先看一下在基于ARM内核的SoC设计里面的片内跟踪模块,也就是常说的ARM嵌入式跟踪宏单元(ARM ETM)。ETM定义了一个物理跟踪端口用来传输程序执行流程的信息,下面是对ETM端口的各个组成信号的简要描述。
TRACECLK: 该信号用来同步收集跟踪信息的硬件(也就是在线调试器)和ETM。所有的IPESTAT和TRACEPKT信号都在TRACECLK信号的边沿上被采样。在不同的ETM运行模式下,该信号可以是ARM内核工作频率的两倍、一半、或者同频。
PIPESTAT(0-2):这三个流水线状态信号表明对应每个TRACECLK时钟周期,处理器指令流水线内部事件的详细信息如指令已经执行、发生跳转等。
TRACEPKT: 程序执行流程通过TRACEPKT信号(依ETM模式不同,可以是4、8,或者 16 针)传递出处理器。对每个非直接跳转,压缩后的跳转目的地址被包含在跟踪报文中。“非直接跳转”是个很宽泛的说法,一般是指跳转的目的地址只能在程序运行的时候才能确定的情况,如通过寄存器加载PC寄存器,预测会发生的跳转指令和异常等。这些程序执行流程信息,和源代码一起,就能够让开发工具重建完整的程序执行流程。源代码既可以通过调试器加载,也可以通过处理器的JTAG接口从内存中读取。
不仅限于程序执行流程,ETM用户还可以有选择地在跟踪端口的输出中包括数据读写信息。在跟踪端口的输出中,可以只有地址信息(以压缩方式)或数据内容,也可以同时包括地址信息(以压缩方式)和数据读写的内容。使能对数据读写信息的跟踪后,这些信息将被cha(敏感词)ru到程序执行流程信息流中的恰当位置上。
TRACEPKT可以是4位、8位、或者16位的格式。跟踪端口越窄,通过跟踪端口传递跟踪信息就需要越多的TRACECLK时钟周期。一般4位的TRACEPKT用来重建完整的程序执行流程已经是足够了。但是,包含数据跟踪信息后可以很快的使这个窄位宽跟踪端口超过负荷。尤其是使能了数据跟踪功能后,连续出现32比特的数据访问就很容易出现这种情况。例如,对一组寄存器执行压栈和出栈操作的时候,为了避免在跟踪端口上出现这种过负荷的情况,可以在ETM和外部的开发工具之间增加一个FIFO缓存。当频繁发生跳转和数据读写指令的时候,这个中间缓存就显得尤为重要了。
跟踪端口的位宽和FIFO的大小都可以有很多种选择,如何正确组合这两个因素非常关键,这将有助于防止跟踪信息的丢失。对于ARM ETM,Lauterbach推荐的最低配置是8位的端口位宽和45字节的FIFO缓存大小。这个组合在绝大多数情况下可以防止跟踪信息的丢失。
上面提到的ETM跟踪方法的优点是记录信息的媒介在CPU内核以外,这就使得CPU外部的开发工具可以包含无限大小的跟踪缓存。如果在线调试器中可以提供512MB的跟踪缓存,对打开Cache并运行在100MHz的ARM926EJ-S理器来说,可以存储1.4秒的信息,大多数嵌入式开发者都认为这个已经足够满足需求了。
关键词: 嵌入式 跟踪 单元 简介 端口 信息
4楼
要看芯片实现了ETM模块没有,如果实现了的,则可以通过SWDO端口实现SWV,通过printf打印调试信息,STM32单片机大多数都使能了ETM功能模块的,可以在SWD模式下通过SWDO(也就是JTAG模式下的TDO管脚)在Keil中打印printf输出的调试信息,而不必浪费USART,很实用的
共5条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 | |
【FRDM-MCXN947评测】核间通信MUTEX被打赏50分 |