当前位置:网站首页>ARM Cortex-M上的Trace跟踪方案
ARM Cortex-M上的Trace跟踪方案
2022-08-05 06:42:00 【Rainmicro】
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
边栏推荐
- Mysql master-slave delay reasons and solutions
- [Shanghai] Hiring .Net Senior Software Engineer & BI Data Warehouse Engineer (Urgent)
- Japan Sanitary Equipment Industry Association: Japan's warm water shower toilet seat shipments reached 100 million sets
- Tencent Business Security Post IDP Talk Summary
- Week 8 Document Clustering
- Shiny04---DT和进度条在shiny中的应用
- 400 times performance improvement 丨 swap valuation optimization case calculation
- 线程池的使用(结合Future/Callable使用)
- After working for 3 years, I recalled the comparison between the past and the present when I first started, and joked about my testing career
- TCP的粘包拆包问题+解决方案
猜你喜欢
随机推荐
Flink学习10:使用idea编写WordCount,并打包运行
腾讯实习总结
PCI Pharma Services宣布斥资数百万美元扩建英国制造设施,以满足市场对支持肿瘤治疗的全球高效药制造服务日益增长的需求
TRACE32——SMP多核调试
文本特征化方法总结
UDP group (multi)cast
1、Citrix XenDesktop 2203之AD域系统安装(一)
TCP的粘包拆包问题+解决方案
typescript60-泛型工具类型(readonly)
UDP组(多)播
typescript64-映射类型
(四)旋转物体检测数据roLabelImg转DOTA格式
AI + video technology helps to ensure campus security, how to build a campus intelligent security platform?
Day9 of Hegong Daqiong team vision team training - camera calibration
Shiny02---Shiny异常解决
Redis进阶
17-VMware Horizon 2203 虚拟桌面-Win10 手动桌面池浮动(十七)
691. 立方体IV
软件测试必问面试题(附答案和解析)
对数据类型而言运算符无效。运算符为 add,类型为 text。









