【学习日记】使用Tracealyzer跟踪FreeRTOS运行
前言
发现一款FreeRTOS可视化分析工具Tracealyzer,对FreeRTOS程序分析以及优化有帮助。
Tracealyzer介绍
Tracealyzer是Percepio 公司开发的一款用于RTOS或用于linux的嵌入式软件系统的可视化跟踪工具。提供多种可视化分析视图,不多说了,直接上图。

Tracealyzer下载
进入Percepio官网,(需要梯子) ,进入官网后选择下载

之后在目标平台选择FreeRTOS

填写完信息后会收到下载链接以及秘钥,下载之后一路next完成安装。之后在Tracealyzer输入秘钥完成激活

注意这个秘钥只有30天试用,30天到期后需要购买,个人使用推荐破解,网上有破解教程
可在官网获取移植配置教程

Tracealyzer移植
推荐使用F4,F1配置有些不够。
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目前不支持流模式。
Tracealyzer移植
在KEIL工程中使用Tracealyzer,首先需要集成Tracealyzer的跟踪记录库,该记录库文件在Tracealyzer的安装目录下。
1 | │ readme.txt |
在keil里建立以下分组
1.将trcKernelPort.c、trcSnapshotRecorder.c和trcStreamingRecorder.c 3个主要源码文件添加到工程中
2.将3个配置文件也添加到工程中,方便随时修改跟踪记录库的配置。建议每个工程分别使用一组配置文件,将trcConfig.h、trcSnapshotConfig.h和trcStreamingConfig.h复制到独立的工程目录下即可。
3.将TraceRecorder\include目录添加到头文件路径中。
4.修改配置文件trcConfig.h,删除#error “Trace Recorder: Please include your processor’s header file here and remove this line.”,并#include处理器头文件。
5.将硬件移植配置为Tracealyzer针对Cortex-M提供的实现。
6.将跟踪模式设置为快照模式(Snapshot)
在trcKernelPortConfig.h中修改配置

7.设置所使用的FreeRTOS的版本。
不知道自己的FreeRTOS版本的可以查看FreeRTOS.h头文件的最上方
8.修改trcSnapshotConfig.h,设置快照的模式,当事件缓存满了之后停止跟踪。
9.设置事件缓存的大小,单位是字,这里我们设置为4000。
10.在FreeRTOSConfig.h配置文件中使能跟踪功能。
11.在main函数中调用vTraceEnable(TRC_START)初始化并使能跟踪,调用的位置须在硬件完成初始化之后,第一个内核对象创建之前(注意添加#include "trcRecorder.h"头文件)。
在Tracealyzer中跟踪
我们使用ST-LINK采用快照模式进行跟踪。打开Tracealyzer的快照工具
在快照设置里选择ST-LINK
点击setting进行ST-LINK的选择以及确认
点击Read Snapshot选项,快照模式会将程序运行跟踪到的数据缓存到指定的RAM区域中,此处设置所需要读取的RAM区域范围。可以在keil中查看芯片的RAM范围。
我使用的STM32F407ZGT6的RAM起始地址是0x20000000,大小是0x1c000
我们将Tracealyzer设置为对应的范围
进行快照读取
到底,我们便成功跟踪了程序的运行。






