ARM® Cortex®-M上的Trace跟踪方案

ARM® Cortex®-M上的Trace跟踪方案

本文介绍Coresight™在Cortex®-M上的一些常用的Trace模块以及劳特巴赫TRACE32如何抓取并分析这些模块产生的Trace数据。

ETM模块

ETM模块,全称Embedded Trace Macrocell,用于为内核上运行的程序记录并输出程序流(Program Flow )

图片

DWT模块

DWT模块,全称Data Watchpoint and Trace Unit,可以产生如下trace信息:

  • 为有限数量的变量的变化,记录数据流
  • 中断入口和出口的相关信息
  • PCSampler,用于对PC指针进行抽样,从而统计CPU负载等
  • 时间性能相关的信息,例如中断开销、睡眠周期等

这些信息会经由ITM送到Trace Sink(跟踪数据接收器)

ITM模块

**ITM模块,全称Instrumentation Trace Macrocell。**除了用于传输DWT产生的Trace数据外,ITM还可以将软件实时测试的一些信息进行输出,并且对系统实时性没有任何干扰。但是需要修改目标源代码,例如将printf输出到ITM通道中。

图片

图片

上面介绍的几个模块,都是Trace数据的产生源(trace source)。数据产生后,需要传输至相应的Trace数据接收器(trace sink)。常见的Trace数据接收器有:

  • Onchip Trace Sink (片上Trace)
  • Offchip Trace Sink (片外Trace)

图片

片上Onchip Trace

**对于Onchip Trace,**跟踪数据一般存储在芯片内部专门的存储器中或者重定向到系统内存中,一般这些存储空间都非常小。

图片

然后,TRACE32调试器可以直接通过JTAG或者SWD等调试口,读出这些跟踪数据进行分析。

片外Offchip Trace

**对于片外Offchip Trace,**跟踪数据会通过不同的接口,传输给外部跟踪工具,例如劳特巴赫TRACE32 μTRACE(MicroTrace)

图片

ETM数据和ITM数据都可经由TPIU接口发送出来,通过1-4条并行跟踪数据线,输出到TRACE32 μTRACE设备中。

如果仅有ITM数据,可以使用单路SWO管脚进行导出到调试器设备中。但由于此时管脚复用等原因,调试协议就不能使用JTAG了,只能使用SWD。

Trace数据的应用和分析

跟踪数据收集到劳特巴赫调试器中后,TRACE32便可以针对这些数据进行统计、分析等,例如:

  • 基于操作系统资源的TRACE数据分析
  • 条件、判定、MC/DC等多维度的代码覆盖率统计
  • 内核、函数、中断等详细的数据统计
  • 系统性能评估的图形分析
  • 以及其他更多功能

图片

关于CortexM的调试和跟踪,可以参考TRACE32相应的帮助文档:

  • <T32安装目录>\pdf\microtrace_cortexm.pdf
  • *<T32安装目录>\pdf*app_arm_coresight.pdf
  • *<T32安装目录>\pdf*training_cortexm_etm.pdf
  • *<T32安装目录>\pdf*debugger_cortexm.pdf
  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值