在RTOS应用的设计过程中,由于任务调度切换是由RTOS任务调度器来管理的,RTOS应用的源代码并不能完全反映多任务系统运行时的实时行为,多任务系统的实时行为还取决于任务、中断、输入和他们的相互作用。因此RTOS应用的实时行为对于开发者而言并不是非常直观的,此时就可以用到SystemView这样的RTOS可视化分析工具来帮助分析应用的实际执行过程。
SystemView是SEGGER公司开发的嵌入式系统可视化分析工具,提供了对应用程序的完整洞察,包括时间轴、CPU负载、运行时间信息、上下文运行时信息等可视化窗口,能够帮助开发者获得对应用运行时行为的深入理解。SystemView支持μC/OS-II、μC/OS-III、FreeRTOS、embOS和无OS的裸机系统。
本文将基于STM32F767ZI_Nucleo开发板的μC/OS-IIII官方移植例程来介绍如何使用Segger SystemView,包含设备端SystemView相关应用代码的添加和PC端SystemView软件的设置,使用到的μC/OS-III版本是V3.07.03版本。STM32F767ZI_Nucleo开发板板载的ST-Link可以使用Seggger提供的STLinkReflash软件将固件更新为J-Link,SystemView支持3种工作模式,持续记录模式下SystemView可以在目标程序运行时实时地记录目标执行情况,本文将使用板载的J-Link调试器和SEGGER实时传输技术(RTT)来演示如何使用SystemView跟踪μC/OS-III。
01目标设备端添加SystemView和RTT的实现代码
(1)要使用SEGGER SystemView,首先要把SystemView和RTT源码文件加到目标应用工程,SystemView和RTT的源码包在PC端SystemView软件的安装目录下有提供。
源码部分包含3个部分:
1)SystemView和RTT实时传输技术的配置文件:可能需要根据应用需求进行一定的修改。
2)SystemView和RTT技术的具体实现源码:通常不需要修改这里的文件。
3)用于多种类型OS及不同版本OS所对应的接口文件:根据应用实际情况选择对应接口文件,本文中我们选择添加uC/OS-III目录下对应的文件。
将前面提到的配置文件、RTT实现源码及OS接口文件加入到工程中后,工程中包含的文件如下,注意还需要在IDE中设置新添加的这些C文件和汇编代码文件的包含路径。
(2)进行一些和SystemView相关的配置
•在os_cfg.h文件中将uC/OS-III的跟踪功能设置为1开启。
#define OS_CFG_TRACE_EN 1u
•在应用代码main.c文件中添加头文件包含
#include "os_trace.h"
•在os_cfg_trace.h中配置任务和其他内核对象的最大数量
在SEGGER_SYSVIEW_Config_uCOSIII.c文件中配置系统的时钟频率,时间戳计数器频率以及芯片RAM内存的基地址,如果工程使用HAL库,可以使用HAL库中提供的函数返回这些参数值。
•在SEGGER_SYSVIEW_Conf.h中设置事件缓存的大小
#define SEGGER_SYSVIEW_RTT_BUFFER_SIZE 1024
这里的缓存空间大小需要根据你所使用的J-Link的调试接口速率,以及所记录的事件数量来决定,当J-Link速率低,或者记录的事件较多时需要设置更大的缓存空间。使用SystemView Single-Shot模式时应加大内存以尽可能的记录更长时间。
(3)在任务创建前调用SystemView的初始化函数
在完成芯片的硬件初始化后,uC/OS任务创建前调用OS_TRACE_INIT()函数来初始化SystemView。
02PC端SystemView软件的安装和设置
PC端SystemView软件可以在Segger官网进行下载。
(1) 要利用J-link实现SystemView持续记录,需要在SystemView软件里的Target->Recorder Configuration选项中设置目标设置芯片型号、目标调试接口类型(JTAG/SWD)和接口速度。
RTT控制块的地址检测选择Auto,通常情况下由J-Link自动搜索即可检测成功。
(2)Recorder Configuration设置完成后,点击Target->Start Recording选项即可开始跟踪记录,在演示中使用到了J-Link,默认使用的跟踪模式是持续记录模式,此时跟踪的开启和停止将由PC端的SystemView软件来控制。
进入跟踪后可以得到如图6所示的可视化跟踪视图,每一栏代表应用中的中断或者Task,按优先级从高到低排列,图6直观的展现了RTOS应用中发生任务抢占的情形,低优先级的DemoTask任务执行过程中被高优先级的TestTask任务抢占。
借助SystemView这样的可视化分析工具,可以帮助开发者更好的了解RTOS应用的实时行为,进而创造更高质量的代码。本文演示中使用的STM32F767ZI_Nucleo开发板的uC/OS-III官方移植例程可以在如下链接中进行下载。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !