SystemView简单移植
一、SystemView是什么
SystemView是由SEGGER公司开发的嵌入式系统可视化分析工具,可以用来可视化的监控嵌入式操作系统的运行,帮助我们更好的学习和开发嵌入式操作系统。
SystemView支持uC/OS-II、μC/OS-III、FreeRTOS、embOS和无OS的裸机系统。
SystemView可以使用串口、J-Link等连接方式和硬件进行连接。
二、SystemView工作模式介绍
持续记录模式:基于J-Link调试器和SEGGER实时传输技术(RTT),SystemView可以在目标程序运行时实时地记录目标执行情况,不使用J-Link RTT技术,也可以通过串口或者TCP/IP实现。
Single-Shot模式:当目标设备不支持RTT或没有使用J-Link时,SEGGER SystemView可以用于记录数据,直到其目标缓冲区被填充满时停止记录。
Post-Mortem模式:类似Single-Shot模式,但会在缓冲区填满时覆盖旧的事件,所以,记录到的是最新的系统活动事件。这个模式可用于分析某些应用突然崩溃的问题,SystemView可以显示系统崩溃前发生的情况。
在这里我们一般都是用持续记录模式,所以并不会做深入的介绍
三、SystemView工作目录
我们创建了一个SystemView文件夹,里面是Config和Src文件。
在keil中是这样的文件夹目录,因为keil不支持多级目录。
在SEGGER提供给我们的SystemView的Src文件夹中有这些内容。
其中
Config文件夹中的是一些RTT实时传输和SystemView的配置。
Sample文件夹中的是一些可用的操作系统的接口文件,需要我们找到需要的接口文件。
SEGGER文件夹中的就是SystemView和RTT的源文件,不需要我们修改,直接放进工程目录中。
四、配置SystemView和RTT以及开启系统追踪功能
- os_cfg.h
在os_cfg.h中找到宏OS_TRACE_EN并将其值改为1,也就是打开系统追踪功能。
OS_TRACE_API_ENTER_EN和OS_TRACE_API_EXIT_EN是系统API调用的监控。
- os_trace.h
要启用系统追踪功能需要将这个头文件包含进去。
在我们的项目中,可以看到这个头文件包含在ucos_ii.h中。
- os_cfg_trace.h
配置宏OS_CFG_TRACE_MAX_TASK 和OS_CFG_TRACE_MAX_RESOURCES表示可以监控的任务和其他内核对象的最大数量。
- SEGGER_RTT_Conf.h
BUFFER_SIZE_UP表示缓冲区最大值,给4096
- SEGGER_SYSVIEW_Conf.h
在这里我没找到SEGGER_SYSVIEW_RTT_BUFFER_SIZE这个定义的宏,所就自己定义了一个。
#define SEGGER_SYSVIEW_RTT_BUFFER_SIZE 4096u
也是定义buffer缓冲区的大小。
- SEGGER_SYSVIEW_Config_uCOSII.c
在这里需要更改两个宏函数SYSVIEW_TIMESTAMP_FREQ和SYSVIEW_CPU_FREQ,这两个宏会被下面的函数SEGGER_SYSVIEW_Conf所调用,所以我们需要让这两个宏的值是SYSCLK的值。利用RCC库中的RCC_GetClocksFreq函数来获取时钟频率。
SYSVIEW_RAM_BASE宏定义表示着缓冲区的最低地址,应该不需要更改。
1 | int SYSCLK_FreqGet(){ |
再往下是中断信息的输出函数,在这里进行输出的更改,在SystemView中想看到具体的中断名称而不仅仅是中断号,就可以在这里进行配置。
例
SEGGER_SYSVIEW_SendSysDesc("I#15=SysTick");
到这里为止,我们就对SystemView进行了基本的配置和移植。
参考文档:
Starting the Trace Recorder - µC/OS-II Documentation
五、启用SystemView进行追踪
在主程序中调用OS_TRACE_INIT()函数进行初始化。
注意,为了在SystemView的电脑软件中观察到具体的任务,请使用OSTaskNameSet为一个任务设定名称,否则在软件中只能看得到问号。
连接硬件配置
我们所使用的STM32F401RE-NUCLEO开发版有板载的ST-Link,SEGGER官方提供了一个ST-LINK Reflash 工具,可以用来把ST-Link变成J-Link来用。跟着其中的教程一步步走,先安装两种Link的驱动,再使用软件将ST-Link变成J-Link。这时候发现J-Link不能直接给板子供电,必须要外接一个供电设备比如另外一个ST-Link。
软件配置
打开SystemView软件,在Target中可以看到Record Configuration,在这里选择J-Link并且自己选择好设备类型,之后就可以开始记录了。
- Title: SystemView简单移植
- Author: HarderHeng
- Created at : 2024-05-08 21:39:17
- Updated at : 2024-05-15 17:00:29
- Link: https://harderheng.life/2024/05/08/SystemView简单移植/
- License: This work is licensed under CC BY-NC-SA 4.0.