当前位置:网站首页>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
边栏推荐
- 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
- Tencent Business Security Post IDP Talk Summary
- Does Libpq support read-write separation configuration?
- 【LeetCode】235.二叉搜索树的最近公共祖先
- 蓝牙gap协议
- 2022熔化焊接与热切割操作证考试题及模拟考试
- 怎么样避免线上内存泄漏
- 【工具配置篇】VSCode 常用使用总结
- Week 8 Document Clustering
- Shared memory + inotify mechanism to achieve multi-process low-latency data sharing
猜你喜欢
Why does Mysql fail to create a database
HR:这样的简历我只看了5秒就扔了,软件测试简历模板想要的进。
FPGA解析B码----连载4
typescript68-索引查询类型(查询多个)
protobuf is compiled against the associated .proto file
400 times performance improvement 丨 swap valuation optimization case calculation
3555. 二叉树
真实字节跳动测试开发面试题,拿下年薪50万offer。
Task flow scheduling tool AirFlow,, 220804,,
Flink学习10:使用idea编写WordCount,并打包运行
随机推荐
[Tool Configuration] Summary of Common Uses of VSCode
17-VMware Horizon 2203 虚拟桌面-Win10 手动桌面池浮动(十七)
MySQL:order by排序查询,group by分组查询
UDP broadcast
Mysql主从延迟的原因和解决方案
【Dynamic type detection Objective-C】
TCP的粘包拆包问题+解决方案
FPGA parsing B code----serial 4
IO进程线程->进程间的通信->day7
给网站套上Cloudflare(以腾讯云为例)
Kioxia and Aerospike Collaborate to Improve Database Application Performance
TRACE32——SMP多核调试
TCP sticky packet unpacking problem + solution
【工具配置篇】VSCode 常用使用总结
typescript68-索引查询类型(查询多个)
Flink Learning 12: DataStreaming API
typescript62-泛型工具类型(record)
Tencent Business Security Post IDP Talk Summary
蓝牙gap协议
Flink Learning 11: Flink Program Parallelism