BMRTECH2017 发表于 2022-3-23 14:58:51

在KEIL中使用ST-Link和Tracealyzer的技巧分享!

Tracealyzer是Percepio 公司开发的一款用于RTOS或基于linux的嵌入式软件系统的可视化跟踪工具,对系统运行时的行为提供了前所未有的洞察方法。帮助开发人员加快固件的开发,减少对系统验证和性能优化所需要的时间。Tracealyzer提供了30多种相互关联的运行时行为视图,包括任务调度、中断、任务之间的相互作用,以及从应用程序代码中记录的用户事件。作为传统调试的补充,Tracealyzer提供了更高层次的调试视图,非常适合理解典型的实时问题。
Tracealyzer不需要额外的跟踪硬件,这意味着也可以在产品部署时使用,用于捕获难以复制的错误。Tracealyzer for FreeRTOS支持两种追踪模式:快照模式(Snapshot Mode)和流模式(Streaming Mode)。
快照模式(Snapshot Mode):将追踪数据存储在RAM中,然后通过IDE工具读取出来保存为文件,在PC端进行分析和显示。流模式(Streaming Mode):将追踪数据实时传送到PC端,目前Tracealyzer for FreeRTOS支持JLINK-RTT、 ARM-ITM、 USB CDC、 TCP/IP、 串口等几种流模式(官方将其称为streamports)。注意ST-Link目前不支持流模式。在KEIL中使用Tracealyzer
我们使用STM32F411E-Disco开发板来了解一下如何在Keil中使用Tracealyzer,开发板板载ST-Link, ST-Link无法使用流模式,因此,我们选择快照模式捕获数据。(1)要在KEIL工程中使用Tracealyzer,首先需要集成Tracealyzer的跟踪记录库,该记录库文件在Tracealyzer的安装目录下。详细的记录库集成和快照模式配置可以参考之前发布的这篇文档:快速入门| Tracealyzer跟踪记录库移植跟踪记录库集成后的项目文件夹如图1所示,注意还需包含对应的头文件。图1
使用ST-Link和KEIL,集成跟踪记录库文件之后该如何进行Tracealyzer跟踪选项设置?使用ST-Link和KEIL时的Tracealyzer选项设置(1)通过Trace->Open Snapashot Tool选项打开快照模式设置。图2
(2)在快照模式的模式里选择使用ST-Link。图3
(3)打开设置选项,检查ST-Link对应的设置栏是否检测到了所连接的ST-Link调试器,同时连接多个ST-Link时可以在此处进行选择。图4
(4)点击Read Snapshot选项,快照模式会将程序运行跟踪到的数据缓存到指定的RAM区域中,此处设置所需要读取的RAM区域范围。读取芯片RAM中的Trace数据。需要设置芯片的型号,起始地址和读取的字节数,注意这里读取的地址范围必须包含完整的Trace buffer。
读取后的数据将会保存为*.hex格式的文件,点击图5中的Open Snapshot选项即可在Tracealyzer中打开该hex文件进行分析。图5
获取跟踪数据后,在Tracealyzer中提供了30多种可视化的分析视图,图6展示了跟踪获取到的两个LED任务发生任务抢占的情况。图6在KEIL中获取跟踪数据的其他方法
(1)使用控制台命令Tracealyzer获取到的跟踪数据保存在RAM区域内的一个数组中,该数组的首地址对应的变量名称为RecorderDataPtr。进入调试状态后,可以通过KEIL软件Command窗口支持的SAVE命令将该数组的内容保存为一个hex格式的文件。KEIL支持的SAVE命令的格式如下:SAVE   path\fname   startAddr, endAddr[, accSize]SAVE命令加上要保存文件的地址和文件格式,以及所需要保存的RAM区域的地址范围。具体的范围大小为可选项。因为缓存数组的首地址为一个名为RecorderDataPtr的指针变量,通过如下命令即可将该缓存数组的内容保存到D:\F411E 文件夹下的test.hex文件中。将这个hex文件在Tracealyzer中打开即可。SAVE D:\F411E\test.hex   RecorderDataPtr , (RecorderDataPtr + 1)图7
(2)将SAVE命令行保存为一个选项按钮KEIL进入调试状态后,在debug标签页下选择"Function Editor"选项。图8
将下面的文件内容保存到一个格式为*.ini格式的文件中。FUNC void SavePercepioRecorderData(void){    printf("Saving Recorder Data in out.hex!\n");    exec("SAVE \"out.hex\"RecorderDataPtr , (RecorderDataPtr + 1)");    //未具体指定保存的情况下文件保存在工程的根目录下}DEFINE BUTTON "Save Recorder Data", "SavePercepioRecorderData()"在Fuction Editor标签页中,open加载上面保存的ini文件,点击右侧Compile选项后,将会在KEIL的Toolbox窗口中生成一个选项,点击该选项将自动执行上面的命令并将跟踪数据保存为一个hex文件。图9
本文介绍了在使用ST-Link和KEIL的时候,和Tracealyzer相关的一些小技巧,希望能够为用户提供更好的体验。更多相关的技术资料可以关注并查阅“麦克泰技术”公众号,可以联系“info@bmrtech.com”获得Tracealyzer商用和教育版授权。
页: [1]
查看完整版本: 在KEIL中使用ST-Link和Tracealyzer的技巧分享!