随着嵌入式系统规模和复杂度不断提升,传统的调试手段已难以满足对系统运行状态的精细化分析需求。为提升开发效率、优化系统性能,RT-Thread 推出了一款全新调试工具 —— RT-Trace。该工具基于 SWO 技术实现对操作系统运行状态的实时跟踪,无需安装额外软件,即可通过 Web 页面直观查看线程切换、中断响应等关键信息,极大降低了调试门槛。
本文将以实际开发板为基础,展示 RT-Trace 的 Trace 功能在调试 Cortex-M4 平台中的应用效果,包括配置流程、可视化分析、时间测量等操作体验,帮助开发者更全面地了解该工具在项目开发中的应用价值。
1.
进入RT-Trace配置页面
在板子的右下角是有Trace的IP地址,我们在浏览器中输入该地址进入配置页面。
摆在第一行的就是Trace功能的介绍。可以看到有如下特点:
基于 SWO 的 RT-Thread OS 跟踪 (Trace) 功能,无需额外安装软件,捕获线程关系。
免安装的 Web UI,直接在浏览器中实时显示线程间的调用关系。
以高速 SWO Trace 为基础,后续升级固件支持持久化线程运行记录,统计各线程用量与 CPU 随时间的工作负载。
后续升级支持 TPIU Trace 接口,可以观察到更多内部信息。
从介绍捕获线程功能来看,RT-Trace应该是定位一款专用工具,因为不同RTOS的线程控制块是不一样的,需要人力物力去适配。
2.
Trace 配置
点击左侧的Trace Config选项进入配置页面。
本次调试的板子是Cortex-M4内核的STM32F407,使用的是RT-Thread的星火一号开发板。板子链接至星火一号开发板预留的Trace接口。
进入页面后,首先配置选择JTAG,Cortex(RISC-V的芯片选择RISC-V),频率默认,然后点击提交即可,此时在右上角可以显示芯片的ID,显示正确则表示连接成功。
然后依次点击下述两个自动探测选项,探测线程的地址与MCU主频(这里比较好奇线程地址是怎么探测出来的,是否有大佬解答一二),然后swo的频率可以调高一些,这里配置为21,最后点击提交配置就可以啦。下面是配置完成的页面。
然后点击左侧的Trace Viewer选项进入Trace页面。
3.
Trace Viewer
进入Trace Viewer页面如下。
点击左上角的Start选项进行Trace,适当时间后点击stop选项,完成Trace,点击左侧的perfett0-trace选项出现下述页面。
接下来将探测出的波形图局部放大进行观察。
局部放大后可以直观的看到各个线程与中断的运行情况,看来这个对调试RT-Thread项目是个不错的选择。有时候我们期望看一下某个线程的执行时间,比如这里看一下shell线程的执行时间,点击左键选择shell线程的起始位置,便可以看到shell线程当前一次执行的时间为10us,这个功能很不错呀。
我们知道在cortex-m系列的MCU,RTOS的切换大多由pendsv中断实现,,那么框选下述部分我们便可以看到当前一个线程切换到另一个不同的线程的时间。下图当前运行过程从shell线程到idle线程用时5.3us。
当然想看一下某个中断到线程的切换时间也是同样的道理。比如下述从pendsv中断到idle线程用时1.5us。
这期体验就到这里啦,最后总结一下使用感受吧。
4.
体验总结
优点:
直观的将系统的线程运行状态展示出来便于调试以及对项目线程的优化
原生支持RT-Thread无需其他额外适配工作,探测功能很方便
时间测量功能很方便,可以知道线程到线程,线程到中断,线程的执行时间,中断服务函数的执行时间等等,方便优化自己的项目
缺点:
当前主要支持ARM系列的芯片,相对使用其他架构的RT-Thread的项目就有点可惜,未来会支持?
是否可以加一个一键出报告的功能,不需要用户一个一个去点去测量,针对一些RTOS的指标可以一键输出?
5.
立即抢购
🔗 淘宝抢购直达:https://item.taobao.com/item.htm?id=925443015784
End
想要在RT-Thread平台或社区投放内容?或想参与相关直播活动及赛事?RT-Thread已开放对接窗口,请通过邮件与我们取得联系,期待合作!
合作邮箱: tongfangyi@rt-thread.com
欢迎联系小睿助手:
点击下方“阅读原文”