SystemView是Segger官方出品的嵌入式操作系统观测软件,仅需使用JLink与嵌入式设备连接,在目标设备上添加下位机代码即可监视包括但不限于FreeRTOS等操作系统,同时也支持裸机程序,最终能够实现观测系统运行事件,任务时间线,任务详细信息统计(阻塞,运行时间,CPU占用率,栈使用信息)等等非常丰富的监控内容。
系统环境:
- 目标芯片:STM32F103RCT6
- CubeMX版本:6.7.0
- Keil版本:5.36
- FreeRTOS版本:10.0.1
- SystemView版本:3.50a
本文目标为Segger SysteView自动监测的配置,即打开软件开始监测,监测时长受限与本地计算机磁盘大小,另外两种方式分别为single-shot和持续录制的模式,前者需要手动指定segger事件记录缓冲区大小,记录满后会停止记录,后者也需要指定缓冲区大小,但是区别在于记录满后会覆写旧数据,该循环覆写模式特别适合记录系统死机、崩溃、异常等问题发生前的系统活动,但在本文中不再详细讲解如何配置。
一、CubeMX FreeRTOS项目设置
为了能让SystemView使用FreeRTOS相关API,需要开启FreeRTOS Trace功能,该功能位于CubeMX中如下
二、部署SystemView下位机代码
1.下载资源
接下来下载SystemView上位机软件和下位机代码
2.为项目添加代码
下位机源码目录主要分为三部分,config配置相关头文件,sample根据目标系统自行选择,SEGGER实现Segger RTT技术的核心代码
在项目根目录下新建Analyze文件夹,并将如上三个文件夹复制到其中,因为我们的目标系统是FreeRTOS,所以sample目录中可以只保留FreeRTOSV10文件夹
这里我们在Keil中为项目新建一个组任意命名,并向其中添加如下文件
前两个文件位于SEGGER文件夹中,后两个文件可以在sample/FreeRTOSV10和sample/FreeRTOSV10/config文件夹内找到
3.为项目添加Include路径
根据个人文件夹命名添加最后三个路径,至此所有文件已经添加完成。
4.Patch文件应用(可选)
针对FreeRTOS Segger下位机软件包内还包含了可额外跟踪调度器调度时间监测的patch文件,需要改动两个头文件和一个c文件,据我在STMF103RCT6平台上72Mhz速度运行测试FreeRTOS调度器耗时一般在几十微秒内,如无需跟踪该数据可以不用使用该Patch文件。
使用CubeMX生成项目使用FreeRTOSV10_Core.patch文件
需要更改的文件路径如下
Middlewares\Third_Party\FreeRTOS\Source\include