0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

麦克泰技术 来源:麦克泰技术 作者:麦克泰技术 2022-11-04 11:13 次阅读

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软件的安装目录下有提供。

3a76f9a8-5bee-11ed-a3b6-dac502259ad0.png

源码部分包含3个部分:

1)SystemView和RTT实时传输技术的配置文件:可能需要根据应用需求进行一定的修改。

2)SystemView和RTT技术的具体实现源码:通常不需要修改这里的文件。

3)用于多种类型OS及不同版本OS所对应的接口文件:根据应用实际情况选择对应接口文件,本文中我们选择添加uC/OS-III目录下对应的文件。

将前面提到的配置文件、RTT实现源码及OS接口文件加入到工程中后,工程中包含的文件如下,注意还需要在IDE中设置新添加的这些C文件和汇编代码文件的包含路径。

3a9394aa-5bee-11ed-a3b6-dac502259ad0.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中配置任务和其他内核对象的最大数量

3aa91294-5bee-11ed-a3b6-dac502259ad0.png

在SEGGER_SYSVIEW_Config_uCOSIII.c文件中配置系统的时钟频率,时间戳计数器频率以及芯片RAM内存的基地址,如果工程使用HAL库,可以使用HAL库中提供的函数返回这些参数值。

3ac3832c-5bee-11ed-a3b6-dac502259ad0.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。

3aecf8ce-5bee-11ed-a3b6-dac502259ad0.png

02PC端SystemView软件的安装和设置

PC端SystemView软件可以在Segger官网进行下载

(1) 要利用J-link实现SystemView持续记录,需要在SystemView软件里的Target->Recorder Configuration选项中设置目标设置芯片型号、目标调试接口类型(JTAG/SWD)和接口速度。

RTT控制块的地址检测选择Auto,通常情况下由J-Link自动搜索即可检测成功。

3b02b682-5bee-11ed-a3b6-dac502259ad0.png

3b1b8496-5bee-11ed-a3b6-dac502259ad0.png

(2)Recorder Configuration设置完成后,点击Target->Start Recording选项即可开始跟踪记录,在演示中使用到了J-Link,默认使用的跟踪模式是持续记录模式,此时跟踪的开启和停止将由PC端的SystemView软件来控制。

进入跟踪后可以得到如图6所示的可视化跟踪视图,每一栏代表应用中的中断或者Task,按优先级从高到低排列,图6直观的展现了RTOS应用中发生任务抢占的情形,低优先级的DemoTask任务执行过程中被高优先级的TestTask任务抢占。

3b2ce4b6-5bee-11ed-a3b6-dac502259ad0.png

借助SystemView这样的可视化分析工具,可以帮助开发者更好的了解RTOS应用的实时行为,进而创造更高质量的代码。本文演示中使用的STM32F767ZI_Nucleo开发板的uC/OS-III官方移植例程可以在如下链接中进行下载。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • SystemView
    +关注

    关注

    5

    文章

    47

    浏览量

    24275
  • RTOS
    +关注

    关注

    20

    文章

    776

    浏览量

    118796
  • 源代码
    +关注

    关注

    95

    文章

    2929

    浏览量

    66063

原文标题:如何使用SystemView跟踪分析μC/OS-III?

文章出处:【微信号:麦克泰技术,微信公众号:麦克泰技术】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    分析一下uC/OS-III和FreeRTOS的区别

    在阅读完uC/OS-III(V3.03.01)和FreeRTOS(V10.0.1)的源码后,我对RTOS有了较深的认识。现将它们之间的一些区别总结出来,有利于大家理解这两个RTOS。1
    发表于 12-17 10:31

    技术小课堂| µC/OS-III的应用中CSTACK重用

    ​​当使用µC/OS-III开发应用时,C启动堆栈可能会丢失,导致嵌入式应用中可用的RAM量减少。本篇展示了如何恢复这段RAM空间,作为任务堆栈使用。在Cortex-M架构的处理器上,向量表中包含
    发表于 05-17 16:25

    请问有µC/OS-III V3.04.05版本的程序吗?

    我最近在研究µC-OS-III,Micrium公司从3.05版本号,进行了很多改变,包括将定时器轮、时钟节拍轮和延时中断发布等功能去除了,也就是说µC/OS-III V3.04.05是一个比较经典的程序版本,哪位朋友有µ
    发表于 03-27 04:35

    uC/OS-III和FreeRTOS的区别是什么?

    在阅读完uC/OS-III(V3.03.01)和FreeRTOS(V10.0.1)的源码后,我对RTOS有了较深的认识。现将它们之间的一些区别总结出来,有利于大家理解这两个RTOS。1
    发表于 06-09 15:09

    μC/OS-III学习笔记分享

    μC/OS-III 学习笔记
    发表于 12-21 07:46

    μC/OS-III系统内部的5个系统内部任务详解

    μC/OS-III系统内部的5个系统内部任务
    发表于 12-25 06:47

    μC/OS-III学习笔记分享

    μC/OS-III学习笔记
    发表于 12-31 06:19

    μC/OS-III中断管理和时间管理介绍

    μC/OS-III中断管理和时间管理
    发表于 01-11 06:35

    μC/OS-III学习笔记分享

    μC/OS-III 学习笔记
    发表于 01-26 07:22

    采用μC/OS-III及STM32设计的多功能控制器

    基于μC/OS-III及STM32的多功能控制器设计
    发表于 02-05 07:52

    uC/OS-III学习笔记

    uC/OS-III 学习笔记(一)uC/OS-III移植前言  最近毕设要做一个嵌入式设备,需要用到操作系统。本人只会制板和写ARM裸机程序,OS方面是一个小白,只对uC/OS和Lin
    发表于 08-06 06:33

    STM32F103C8T6移植uC/OS-III过程

    STM32F103C8T6移植uC/OS-III基于HAL库详细过程一、获取uC/OS-III源码1. 到官网下载2. 某度网盘直接下载二、建立stm32 hal库工程三、复制uC/OS-II
    发表于 12-07 09:29

    uC/OS-III介绍

    uC/OS-III(Micro C OS Three 微型的C 语言编写的操作系统第3版)是一个可升级的,可固化的,基于优先级的实时内核。它对任务的个数无限制。uC/OS-III
    发表于 07-13 17:31 0次下载

    uC/OS-III的特点

    uC/OS-III简介 uC/OS-III(Micro C OS Three 微型的C 语言编写的操作系统第3版)是一个可升级的,可固化的,基于优先级的实时内核。它对任务的个数无限制。uC
    发表于 10-13 14:07 1971次阅读

    如何将项目从VDK迁移到µC/OS-III

    本培训模块将一步一步地说明如何将一个项目从VDK (VisualDSP++ Kernel)迁移到µC/OS-III
    的头像 发表于 07-12 06:10 1923次阅读