当前位置:网站首页>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
边栏推荐
- AI + video technology helps to ensure campus security, how to build a campus intelligent security platform?
- 在anaconda Promat界面import torch通过,在jupyter notebook中报错的问题(仅提供思路理解!)
- 腾讯实习总结
- 铠侠携手Aerospike提升数据库应用性能
- IO process thread -> communication between processes -> day7
- typescript68-索引查询类型(查询多个)
- Japan Sanitary Equipment Industry Association: Japan's warm water shower toilet seat shipments reached 100 million sets
- HR:这样的简历我只看了5秒就扔了,软件测试简历模板想要的进。
- Technical Analysis Patterns (11) How to Trade Head and Shoulders Patterns
- 693. 行程排序
猜你喜欢

Summary of Text Characterization Methods

日本卫生设备行业协会:日本温水喷淋马桶座出货量达1亿套

2022起重机司机(限桥式起重机)考试题库及模拟考试

(JLK105D)中山爆款LED恒流电源芯片方案

Source code analysis of Nacos configuration service (full)

typescript62-泛型工具类型(record)

技术分析模式(十)头肩图案

IO进程线程->进程间的通信->day7

合工大苍穹战队视觉组培训Day9——相机标定

Put Cloudflare on the website (take Tencent Cloud as an example)
随机推荐
真实字节跳动测试开发面试题,拿下年薪50万offer。
typescript67-索引查询类型
Flink Learning 12: DataStreaming API
Libpq 是否支持读写分离配置
今天虚竹哥又发现了一款好用的国产化API工具
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
给网站套上Cloudflare(以腾讯云为例)
开启防火墙iptable规则后,系统网络变慢
《基于R语言的自动数据收集》--第3章 XML和JSON
Week 8 Document Clustering
C# FileSystemWatcher
[上海]招聘.Net高级软件工程师&BI数据仓库工程师(急)
TRACE32——SMP多核调试
【LeetCode】235.二叉搜索树的最近公共祖先
Modeling of the MAYA ship
Cannot compare or sort text, ntext, and image data types
typescript60-泛型工具类型(readonly)
Tencent Internship Summary
Week 8 Document Clustering(文本聚类)
日本卫生设备行业协会:日本温水喷淋马桶座出货量达1亿套