当前位置:网站首页>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
边栏推荐
- 3555. 二叉树
- 铠侠携手Aerospike提升数据库应用性能
- (2022杭电多校六)1012-Loop(单调栈+思维)
- Flink学习10:使用idea编写WordCount,并打包运行
- PCI Pharma Services宣布斥资数百万美元扩建英国制造设施,以满足市场对支持肿瘤治疗的全球高效药制造服务日益增长的需求
- 字节面试流程及面试题无私奉献,吐血整理
- [Shanghai] Hiring .Net Senior Software Engineer & BI Data Warehouse Engineer (Urgent)
- 693. 行程排序
- UDP group (multi)cast
- C# FileSystemWatcher
猜你喜欢
随机推荐
腾讯实习总结
Shiny04---Application of DT and progress bar in shiny
线程池的使用(结合Future/Callable使用)
Japan Sanitary Equipment Industry Association: Japan's warm water shower toilet seat shipments reached 100 million sets
给网站套上Cloudflare(以腾讯云为例)
MySQL: order by sorting query, group by grouping query
Cannot compare or sort text, ntext, and image data types
【instancetype类型 Objective-C】
Takeda Fiscal 2022 First Quarter Results Strong; On Track to Achieve Full-Year Management Guidance
【工具配置篇】VSCode 常用使用总结
Promise (3) async/await
自媒体人一般会从哪里找素材呢?
在STM32中使用printf函数
铠侠携手Aerospike提升数据库应用性能
Hong Kong International Jewellery Show and Hong Kong International Diamond, Gem and Pearl Show kick off
Libpq 是否支持读写分离配置
技术分析模式(十)头肩图案
Technical Analysis Mode (8) Double Top and Bottom
Nacos cluster construction
Mysql master-slave delay reasons and solutions








