欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

如何实现嵌入式追踪单元ETB和MTB(微追踪缓冲区)

最编程 2024-08-04 19:48:46
...

嵌入式跟踪单元ETB MTB (Micro Trace Buffer )的实现

释义

1 ARM程序开发难免碰到BUG,如果是明显的逻辑BUG,那我们用普通调试手段就可以达到目的;在项目开发阶段,常常会遇到Hard fault错误或者程序跑飞的情况,这些bug采用正常的方法是比较难定位的。

2 调试(debug)手段不管用,或者效率低下的时候,就需要我们的追踪(trace)手段上场了,庆幸的是,ARM的芯片很好地设计了这个内容,不管是Cortex-M3/M4内核,还是Cortex-M0内核,基本都标配了CoreSight组件。
如果还不知道什么是CoreSight,可以看看下面两个文章:
链接: https://www.sohu.com/a/130338404_505803.
链接: http://www.360doc.com/content/18/0125/15/496343_725004399.shtml.
3
介绍各种跟踪单元,链接: http://www.myir-tech.com/resource/510.asp.

CoreSight
CoreSight CoreSight 是一种基础架构,它可对完整的芯片上系统 (SoC) 设计的性能进行调试、监视和优化,CoreSight™ 跟踪宏单元在 SoC 中提供全面的非干预性可见性。

通过遵循 CoreSight 架构规范,可以方便地将合作伙伴特定的跟踪宏单元集成到 CoreSight 系统中
ETM,嵌入式跟踪宏单元
ETM 宏单元为 ARM 微处理器提供实时指令跟踪和数据跟踪。跟踪软件工具使用 ETM 生成的信息重建全部或部分程序的执行情况。

PTM,程序跟踪宏单元
PTM 是一个模块,它根据程序流程跟踪 (PFT) 体系结构执行实时指令流跟踪。跟踪工具使用 PTM 生成的信息重建全部或部分程序的执行情况。

ITM,测量跟踪宏单元
CoreSight ITM 块是一个软件应用程序驱动的跟踪源。支持的代码将生成软件测量跟踪 (SWIT)。此外,该块还提供粗略的时间戳功能。

该块的主要用途是:

支持 printf 风格调试
跟踪操作系统和应用程序事件
发出诊断系统信息
HTM,AHB 跟踪宏单元
HTM 可显示无法使用 ETM 从内核跟踪推断的总线信息:

了解多层总线利用率。
软件调试。例如,内存区域访问和数据访问的可见性。
跟踪触发器或过滤器的总线事件检测,以及用于总线分析。
HTM 提供了有关 AHB 总线的地址和数据跟踪信息。通过将 HTM 中的信息与调试器结合使用,可对基于 AHB 的嵌入式系统进行方便、精确的调试。HTM 提供了广泛的资源以使事件识别功能生成触发事件。HTM 通过 AMBA 跟踪总线 (ATB) 来生成输出的跟踪数据。跟踪调试功能是非干预性的。可以使用 APB (AMBA v3) 接口来控制 HTM。

STM,系统跟踪宏单元
STM为所有软件开发人员提供了低成本的软件和硬件执行实时可见性,尤其是应用程序和内核开发人员,从而为整个供应链中支持 ARM 处理器的设备提供了功能丰富且优化的低能耗软件。

ECT,嵌入式交叉触发
CoreSight ECT 是一个控制和访问组件,支持 SoC 内的多个触发事件的交互和同步。

ETB,嵌入式跟踪缓存
CoreSight ETB 是一个跟踪接收器,它可使用可配置大小的 RAM 为跟踪数据提供芯片上存储。
文章链接:

MTB 微型嵌入式跟踪缓存
值得注意的是,ETB模块是Cortex-M3/M4内核的片上跟踪单元,而MTB模块则是Cortex-M0/M0+内核的跟踪单元,意为微型跟踪缓存

实现工具,条件

1 芯片支持
每一款MCU都支持不一样的跟踪单元,查找芯片手册可以很好地确认这一点,本文只介绍MTB。使用芯片为MKW36Z512, 在芯片手册MKW36A512RM .pdf(NXP官网可以下载)21章(449页)中,很好地解释了本芯片支持MTB功能。

2 IDE,仿真器
IDE:建议使用IAR 。
仿真器:CMSIS-DAP,价格低廉,淘宝价格几十人民币,相比JTrace一万多人民币,实在划算太多了。
值得注意的是,测试出JLINK并不支持MTB功能,但不会报错,任你如何捣鼓,trace界面都是空。

3实现过程与结果
首先贴上参考链接:
链接: https://community.nxp.com/docs/DOC-330205.
NXP的官方论坛上提供的操作步骤方法,使用的是IAR和JLINK,本人按照其操作,就是没有任何数据,后来看到另一位码友反馈说JLINK无法使用,果断转用CMSIS-DAP,效果立竿见影。
链接: http://www.nxpic.org/module/forum/thread-554892-1-1.html.

第一步:硬件确保正确连接,配置debugger为cmsis dap

在这里插入图片描述

第二步:CMSIS DAP中不需要修改,使用默认配置即可
在这里插入图片描述

第三步,烧录程序,进入main函数后,点击CMSIS-DAP,在列表菜单中点击ETM TRACE
在这里插入图片描述

第四步 检查MTB确实打开了
在这里插入图片描述
查看ETM窗口
在这里插入图片描述
可以看到ETM Trace窗口确实有数据。鼠标在窗口范围内右击可以打开/关闭 Trace, 也可以清空buf, 搜索函数/变量/汇编指令。还可以保存为txt文件到本地电脑,用文本查看工具认真分析。

此外,实用CMSIS-DAP调试工具还有一个好处是,可以使用很多插件了,比如Timeline等等,后续抽空进行分析