查看: 637|回复: 0

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

[复制链接]
  • TA的每日心情
    开心
    2023-6-12 14:34
  • 签到天数: 165 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2022-12-14 13:58:02 | 显示全部楼层 |阅读模式
    分享到:
    在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软件的安装目录下有提供。

    1.png
    源码部分包含3个部分:
    1)SystemView和RTT实时传输技术的配置文件:可能需要根据应用需求进行一定的修改。
    2)SystemView和RTT技术的具体实现源码:通常不需要修改这里的文件。
    3)用于多种类型OS及不同版本OS所对应的接口文件:根据应用实际情况选择对应接口文件,本文中我们选择添加uC/OS-III目录下对应的文件。
    将前面提到的配置文件、RTT实现源码及OS接口文件加入到工程中后,工程中包含的文件如下,注意还需要在IDE中设置新添加的这些C文件和汇编代码文件的包含路径。
    2.png
    (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中配置任务和其他内核对象的最大数量
    3.png
    在SEGGER_SYSVIEW_Config_uCOSIII.c文件中配置系统的时钟频率,时间戳计数器频率以及芯片RAM内存的基地址,如果工程使用HAL库,可以使用HAL库中提供的函数返回这些参数值。
    5.png
    •在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。
    4.png
    02
    PC端SystemView软件的安装和设置
    PC端SystemView软件可以在Segger官网进行下载,下载链接如下:
    https://www.segger.com/downloads/systemview/
    (1) 要利用J-link实现SystemView持续记录,需要在SystemView软件里的Target->Recorder Configuration选项中设置目标设置芯片型号、目标调试接口类型(JTAG/SWD)和接口速度。
    RTT控制块的地址检测选择Auto,通常情况下由J-Link自动搜索即可检测成功。
    6.png 7.png
    (2)Recorder Configuration设置完成后,点击Target->Start Recording选项即可开始跟踪记录,在演示中使用到了J-Link,默认使用的跟踪模式是持续记录模式,此时跟踪的开启和停止将由PC端的SystemView软件来控制。
           进入跟踪后可以得到如图6所示的可视化跟踪视图,每一栏代表应用中的中断或者Task,按优先级从高到低排列,图6直观的展现了RTOS应用中发生任务抢占的情形,低优先级的DemoTask任务执行过程中被高优先级的TestTask任务抢占。
    8.png
    借助SystemView这样的可视化分析工具,可以帮助开发者更好的了解RTOS应用的实时行为,进而创造更高质量的代码。本文演示中使用的STM32F767ZI_Nucleo开发板的uC/OS-III官方移植例程可以在如下链接中进行下载,https://www.weston-embedded.com/micrium-examples/category/230-stm32f7
    如果您需要SystemView软件的商业授权,请联系info@bmrtech.com

    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-4-30 09:01 , Processed in 0.118268 second(s), 16 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.