系统级调试利器SystemView移植及使用教程
本文主要用于介绍SystemView软件,指导在工程中如何植入并对系统作出分析
概要
本文主要用于介绍SystemView软件,指导在工程中如何植入并对系统作出分析
软件介绍
SEGGER SystemView 是一款 实时系统可视化分析工具,专为嵌入式系统设计,用于记录和可视化 任务调度、中断、事件和CPU负载,帮助开发者优化系统性能、调试复杂时序问题。

核心功能
- 任务调度监控:记录任务切换、优先级变化、阻塞和恢复
- 中断和事件跟踪:捕获中断触发、ISR执行时间、任务与中断的交互。
- CPU负载分析:统计各任务和中断的CPU占用率,识别性能瓶颈。
- 低功耗调试:跟踪空闲任务和低功耗模式(如WFI/WFE)的触发情况。
- 自定义事件:支持用户添加自定义事件(如信号量、消息队列操作)。
适用范围:裸机(需手动移植), FreeRTOS UCOS-II UCOS-III RT-Thread Zephyr等主流操作系统,但要求操作系统版本较新,具体版本要求可以通过官网链接查看:SEGGER SystemView User Guide
硬件支持
核心依赖:SEGGER J-Link 调试器(通过RTT协议实时传输数据)。
支持的架构
ARM Cortex-M(M0/M3/M4/M7/M33等,主流应用)。
RISC-V(需验证具体芯片支持)。
其他架构(如PowerPC、Xtensa,需手动适配RTT)。
典型应用场景
- 实时性调试:分析任务响应延迟、中断抢占问题。
- 资源竞争排查:定位死锁、优先级反转(如互斥量使用不当)。
- 低功耗优化:统计空闲任务占比,优化电源管理策略。
- 代码覆盖率分析:结合自定义事件标记关键代码路径。
插件移植
使用SystemView需要在工程中移植官方插件,并在电脑上安装配套软件systemview、jink驱动,下载链接为SEGGER - The Embedded Experts - Downloads - SystemView
上位机软件安装
按提示安装即可。提示:现在最新版本为2025年5月份更新的3.60版本,如果有卡顿等异常现象可选择较老版本,尽量选择3.50、3.10这种稳定的大版本,避开3.41、3.52这种小版本。
裸机移植
文件移植
插件中共三个文件,
- config 插件配置文件,包含RTT和SystemView的配置项
- sample 包含裸机及各种操作系统的移植示例文件
- SEGGER 建立RTT打印通道基本文件

需要包含源文件及相关头文件:
RTT打印相关:SEGGER_RTT.c SEGGER_RTT_printf.c
SystemView相关:SEGGER_SYSVIEW.c ,另外根据自己系统环境在Sample文件中选择合适配置文件,例如UCOS-II选择SEGGER_SYSVIEW_Config_uCOSII.c SEGGER_SYSVIEW_uCOSII.c,其他环境类似,再根据编译提示的信息包含对应头文件即可。
用户配置
RTT配置:在SEGGER_RTT_Conf.h中,主要对BUFFER_SIZE_UP进行配置,此值为向上打印信息的缓冲大小,发生丢数据时可将此值适量调大,基本5120可足够使用。
SYSVIEW配置:在SEGGER_SYSVIEW_Conf.h中,对SEGGER_SYSVIEW_RTT_BUFFER_SIZE适当增大,该值为SYSVIEW的缓存;
初始化
在应用初始化部分调用SEGGER_SYSVIEW_Conf();。另外,SEGGER_RTT的打印功能无需显性初始化,在调用过程中其可自动初始化。
中断配置
在需要监测的中断处配置打桩API,分别在ISR的进入和退出时调用SEGGER_SYSVIEW_RecordEnterISR();SEGGER_SYSVIEW_RecordExitISR();,即可完成中断信息的监测。
为了更方便的在上位机界面观察此中断信息的含义,需要在_cbSendSystemDesc函数中对系统中断添加描述,例如SEGGER_SYSVIEW_SendSysDesc(“I#15=SysTick”);表示中断号15代表名为SysTick的中断,有需要可根据具体芯片型号的中断表进行配置。
用户任务配置
在需要监测的用户任务重配置打桩API,分别在任务进入和退出时调用SEGGER_SYSVIEW_OnTaskStartExec(taskID);SEGGER_SYSVIEW_OnTaskStopExec();,taskID为任务应用函数的地址,如果想使用简单的数字例如1、2等进行表示,则需要在SEGGER_SYSVIEW_Conf.h中将SEGGER_SYSVIEW_ID_SHIFT改为0,此宏定义用于压缩taskID信息,简单数字的taskID有可能会被压缩成无效信息。
操作系统版本移植(UCOS-II为例)
UCOS-II的版本需要在2.90版本以上。
文件移植、用户配置、初始化等3部分参考上述部分即可,另外需打开os_cfg.h中的宏定义:
- OS_DEBUG_EN
- OS_TRACE_EN
- OS_TRACE_API_ENTER_EN
- OS_TRACE_API_EXIT_EN
软件使用介绍
硬件连接
在Tartget->Recorder Cfg中建立连接
启动分析
连接配置好后,点击绿色启动按钮即可启动。
功能介绍
事件清单Events List
该窗口用于显示系统中监测到的事件序列及事件消耗的时间,例如下图中从42~50任务分别为
- 42进入SysTick中断
- 43退出SysTick中断
- 44进入DEV_TASK任务
- 45退出DEV_TASK任务
- 46进入LONG_TASK任务
- 47运行LONG_TASK任务
- 48退出LONG_TASK任务
- 49 空闲任务
- 进入SysTick中断

时间线TimeLine
该窗口图形化显示各个任务之间的切换顺序,及每个任务消耗的时间。例如下图中可看到系统IDLE任务被SysTick打断一次,然后返回继续执行,后面切换为DEV-TASK任务、COMM任务、LONG任务,最终又回到IDLE任务。
下图展示COMM任务被DEV任务打断的情况

CPU负载
该窗口用于显示某时间片段内任务是占用CPU的,例如下面大部分时间被绿色的IDLE任务所占据,中间蓝色的COMM通讯任务也占用较多CPU
任务信息
该窗口用于显示每个任务或者事件的类型、编号、堆栈信息、运行次数、被阻塞时间、运行时间、被中断时间、CPU占用情况等
更多推荐



所有评论(0)