查看: 954|回复: 0

[原创] 如何使用SEGGER J-Trace Pro流模式实现指令跟踪功能?

[复制链接]
  • TA的每日心情
    开心
    2023-6-12 14:34
  • 签到天数: 165 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2022-9-7 11:22:07 | 显示全部楼层 |阅读模式
    分享到:
    侵入式调试和非侵入式调试

    在嵌入式应用的开发过程中,需要通过调试来解决程序运行过程中出现的问题,根据是否会打断程序的“全速运行状态”,调试方式可以分为侵入式调试和非侵入式调试两类。

    侵入式调试手段如下:

    • 停机以及单步执行程序

    • 硬件断点和断点指令(BKPT)

    • 变量数据观察点(Watch观察窗口)

    • 访问寄存器的值

    • 调试监视器异常

    非侵入式调试手段如下:

    • 在内核运行的时候访问存储器

    • 指令跟踪,需要硬件包含指令跟踪单元(ETM)

    通常情况下,我们采用的是侵入式调试,但这种调试会打破程序的全速运行状态。非侵入式调试则可以在保证程序全速运行的情况下,了解程序运行的情况。在调试大型软件和RTOS多任务系统,或者与通信时序相关的应用时(非侵入式调试会破坏通信时序),应用代码可能突然跑飞或者产生异常中断,而导致问题的原因可能难以发现。

    此时非侵入式调试如指令跟踪这样的功能就有着不可比拟的作用。指令跟踪能够记录问题发生之前MCU内部的指令执行历史记录,这些信息可以帮助开发者回溯问题现场来准确定位问题发生的原因。

    指令跟踪的实现方式

    在嵌入式MCU调试中指令跟踪存在多种实现方式,通过对比我们将能够更清楚的了解Segger  J-Trace Pro产品流模式指令跟踪功能的强大之处。


    (1)使用MCU片上缓存实现指令跟踪

    一些MCU内部包含指令缓存区域,缓存区域依据不同芯片型号命名可能有所不同,例如Embedded Trace Buffer(ETB),Micro Trace Buffer(MTB),Embedded Trace FIFO(ETF)等。指令跟踪记录被保存在该片上区域,当程序停止运行时,PC端调试软件读取该区域内数据以获取指令跟踪数据。

    1.png

    使用该方式实现指令跟踪存在的限制:

    • 片上的缓存空间很小,通常缓存空间大小只有kb级别

    • 只能记录非常有限的指令执行历史记录


    (2)使用调试器内部缓存进行指令跟踪

    另外一种实现指令跟踪的方式是调试器内部提供指令缓存空间,缓存空间大小可能为MB到GB级别,但受限于调试器本身的硬件实现成本,调试器内部所能够提供的缓存空间同样不会很大。

    2.png

    该方式实现指令跟踪存在的限制:

    • 片上的缓存空间为MB到GB范围

    • 能记录有限的指令执行历史,但无法记录从应用开始执行到出现异常的全过程指令记录

    • 通常需要暂停应用运行后,PC端软件才会读取缓存在调试器中的Trace数据

    Segger J-Trace Pro流模式指令跟踪

    前面的两种实现方式都因为缓存空间大小的影响而有其使用局限性,Segger J-Trace Pro产品则使用流模式的方式解决了前面两种方式存在的问题,能够给开发者带来成熟的指令跟踪解决方案。J-Trace Pro在SWD/JTAG调试接口引脚之外,与芯片通过额外的跟踪功能引脚连接,包括Trace时钟和数据传输引脚,MCU内部ETM模块中记录的指令通过J-Trace Pro以流模式的方式实时传输到PC端,此时指令的缓存空间在PC电脑端,因此最大的缓存空间甚至可以达到TB级别,彻底解决了前面两种实现方式所存在的局限性。

    3.png

    J-Trace Pro支持通过流模式实时的将指令跟踪数据传输到电脑端,该方案还带来了如下优势:

    • 指令缓存空间大小取决于电脑硬盘大小(TB级别)

    • 能够记录应用从开始执行到出现异常的完整指令过程

    • 能够记录用户与应用程序发生交互行为中的指令执行过程

    • 提供的其他高级调试功能:

      

    4.png
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-4-29 21:57 , Processed in 0.113758 second(s), 16 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.