如何使用SystemView跟踪分析μC/OS-III?

在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官方移植例程可以在如下链接中进行下载。


AI如何助力药物研究
自动驾驶相关技术激光雷达的主要设计考量
在MAX78000上开发功耗优化应用
rk3399性能评测
希捷数据预测:2025年企业存储数据量将超过全球总量的80%
如何使用SystemView跟踪分析μC/OS-III?
电机标定通常涉及哪些参数呢
农药残毒快速测定仪的应用及性能
MAX14653-MAX14655高集成的电涌保护器的电流过电压保护器
着力车联网,高通推出基于骁龙820汽车开发平台
电装工艺改进
老牌诺基亚连发3款新机!骁龙835、6GB通通都有
25条小贴士能够快速提升和巩固你的数据可视化设计
华为现阶段在售机型价格布局
熔断电阻器技术提供具有成本效益的解决方案
济南出台第三代半导体专项政策 国内第三代半导体版图渐显
中国联通将于12月12日在北京举办5G区块链研讨会
Docker容器与虚拟机的区别
欧姆龙开始在上海生产一线自动化的机器人
KUKA机器人MAKRO_TRIGGER程序用法分析