Tracealyzer是Percepio 公司开发的一款用于RTOS的嵌入式软件系统的可视化跟踪工具,提供了30多种相互关联的可视化运行时行为视图,本文将介绍如何使用Tracealyzer的流模式来跟踪ThreadX应用。 “ 添加Tracealyzer跟踪记录器库文件 使用Tracealyzer首先需要在工程中添加用于ThreadX的跟踪记录器库文件,包括源码,头文件、配置文件等。这些文件在Tracealyzer的安装目录下可以找到,默认的保存路径可以参考:C:\Program Files\Percepio\Tracealyzer 4\ThreadX\TraceRecorder。 使用流模式,还需要添加流模式端口所用到的文件,以JLink RTT方式为例需要例如添加记录器库streamports下的Jlink_RTT文件夹中的文件。本文介绍时使用的是STM32CubeIDE,所有文件添加完成后的工程目录结构如下图所示: 注意在进行操作的时候出现的所有的文件夹名称及文件保存路径中均不包含空格和中文字符,以避免在编译过程中出现一些奇怪的错误,以及所有添加文件的头文件包含路径都需要在工程中进行设置。文件的添加过程也可以参考:快速入门| Tracealyzer跟踪记录库移植 “ 工程相关宏和IDE选项设置 (1)要在项目中使用跟踪首先需要在ThreadX的tx_api.h头文件中包含记录器库的头文件。 (2)在ThreadX的配置文件tx_user.h中开启跟踪功能和堆栈检测功能,需要通过修改头文件中的这两条宏来开启。
(3)在Tracealyzer的配置文件trcConfig.h文件中需要包含你所使用芯片系列所对应的头文件,以STM32F4系列芯片为例则是#include "stm32f4xx.h"。 在该文件中还需要指定你所使用的芯片内核,如果是使用M3/M4/M7内核的芯片则选择TRC_HARDWARE_PORT_ARM_Cortex_M即可。
(4)在trcKernelPortConfig.h文件中,通过宏#define TRC_CFG_CPU_CLOCK_HZ设置所使用MCU运行的时钟主频,例如运行在25MHz。
(5)为了实现一些ThreadX自带的跟踪机制所未提供的更为强大的跟踪功能,Tracealyzer提供了一个头文件trcCTI.h,该文件需要被项目工程中的所有代码文件都包含。可以借助IDE提供的设置选项来实现。 在STM32CubeIDE的工程设置中,选择编译器Preprocessor选项的Define symbols(-D)一栏添加“__inside_$(notdir $(basename $(@)))”这一全局宏定义命令来实现。
在该位置添加宏定义后还需在Miscellaneous选项中添加“-include trcCTI.h”命令。
“ 在工程代码中启动跟踪 在ThreadX的入口函数tx_application_define()的入口位置调用vTraceEnable()函数开启Tracealyzer跟踪。vTraceEnable()函数根据函数参数的不同支持多种设置,此处TRC_START指初始化并直接开始跟踪。
“ Tracealyzer电脑端软件的设置 (1)开始实时跟踪。启动Tracealyzer,从File->Settings->J-Link Settings设置调试器所使用的接口和芯片型号。
(2)在PSF Streaming Settings,设置Target Connection为:SEGGER RTT,使用J-Link RTT通讯机制,将Trace数据从目标板经过J-Link调试器传送到PC端软件。
(3)运行目标平台程序,点“Start Recording”图标打开Live Stream窗口,点“Start Session”按钮即可开始实时跟踪。 (4)示例中创建了一个简单的优先级为10的循环打印任务 ,可以看到在Tracealyzer中成功显示了该任务中调用的延时函数,及执行过程中被系统中更高优先级的定时器任务System Timer Thread任务抢占的执行情况。
作为一款功能强大的RTOS可视化跟踪工具,系统运行时的行为提供了前所未有的洞察方法。能够帮助开发人员加快固件的开发,减少对系统验证和性能优化所需要的时间。如需购买软件的商业授权,请联系info@bmrtech.com
|