SystemView是嵌入式系统可视化分析工具,提供了对应用程序的完整洞察,包括时间轴、CPU负载、运行时间信息、上下文运行时信息等可视化窗口,能够帮助开发者获得对应用运行时行为的深入理解。除μC/OS-II、μC/OS-III、FreeRTOS、embOS外,SystemView也支持无OS的裸机系统分析,深入地了解应用。
本文将解释如何在裸机系统中集成SystemView。
集成操作步骤如下:
1、在Embedded Studio中为使用的设备创建一个新项目
2、将SystemView安装目录下的/SEGGER、/Config文件夹中的所有文件和Sample/NoOS/Config/Cortex-M/SEGGER_SYSVIEW_Config_NoOS.c代码文件添加到项目中

3、在SystemViewDescription目录下创建一个名为SYSVIEW_NoOS.txt的文件,将需记录的函数添加到该文件中,id编号从33开始:
33 _TestFunc0 34 _TestFunc1
4、在main.c中包含SEGGER_SYSVIEW_Conf.h和SEGGER_SYSVIEW.h文件
#include "SEGGER_SYSVIEW_Conf.h" #include "SEGGER_SYSVIEW.h"
5、在SEGGER_SYSVIEW_Conf.h修改SEGGER_SYSVIEW_ID_BASE为使用设备的RAM地址
#define SEGGER_SYSVIEW_ID_BASE 0x20000000
6、在SEGGER_SYSVIEW_Config_NoOS.c中,修改函数 _cbSendSystemDesc()为
static void _cbSendSystemDesc(void) {
SEGGER_SYSVIEW_SendSysDesc("N="SYSVIEW_APP_NAME",O=NoOS,D="SYSVIEW_DEVICE_NAME);
}
设置SYSVIEW_RAM_BASE为目标设备的RAM基地址;
// The lowest RAM address used for IDs (pointers) #define SYSVIEW_RAM_BASE (0x20000000)
7、在main()函数中调用SEGGER_SYSVIEW_Conf ();对无os的应用,将整个系统视为idle空闲任务,调用SEGGER_SYSVIEW_OnIdle()
int main(void) {
U32 v;
int Cnt;
Cnt = 0;
SEGGER_SYSVIEW_Conf(); /* Configure and initialize SystemView */
SEGGER_SYSVIEW_Start(); /* Starts SystemView recording*/
SEGGER_SYSVIEW_OnIdle(); /* Tells SystemView that System is currently in "Idle"*/
……
8、可在main应用中初始化系统节拍时钟,在节拍处理程序Systick_Handler开始处调用SEGGER_SYSVIEW_RecordEnterISR ();结束时调用SEGGER_SYSVIEW_RecordExitISR()
void SysTick_Handler(void) {
volatile U32 Cnt;
SEGGER_SYSVIEW_RecordEnterISR();
Cnt++;
SEGGER_SYSVIEW_RecordExitISR();
}
9、在应用程序调用需记录的函数,如_TestFunc0()
10、在Description列表中的每个函数中,调用SEGGER_SYSVIEW_RecordVoid(ID)及 SEGGER_SYSVIEW_RecordEndCall(ID),参数ID为描述文件中的ID编号
static void _TestFunc0(void) {
SEGGER_SYSVIEW_RecordVoid(33);
_TestFunc0Cnt = 100;
while(50 < --_TestFunc0Cnt);
_TestFunc1();
while(--_TestFunc0Cnt);
SEGGER_SYSVIEW_RecordEndCall(33);
}
11、运行应用程序并启动SystemView记录。
如果构建成功,SystemView记录应该如下图:

基于STM32F407+Embedded Studio的“NoOS”Systemview集成示例工程,下载链接:https://wiki.segger.com/images/8/89/SysView_NoOS_GenericCortexM4_Example.zip
仅需修改目标设备名称,即可将该项目可以用于其他Cortex-M4设备。
审核编辑:汤梓红
-
嵌入式系统
+关注
关注
41文章
3716浏览量
133106 -
cpu
+关注
关注
68文章
11218浏览量
222956 -
SystemView
+关注
关注
5文章
54浏览量
25266 -
裸机
+关注
关注
0文章
41浏览量
6908
原文标题:在裸机系统中使用SystemView
文章出处:【微信号:麦克泰技术,微信公众号:麦克泰技术】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
如何在Eclipse ThreadX RTOS中集成SystemView
如何在Linux/Android系统中集成压力传感器和湿度传感器?
如何在PSoC设计器5.4版本中集成HiTeX编译器PRO?
SystemView如何在RT-Thread上对系统进行调试分析?
如何在项目中使用RTOS分析工具SystemView?
基于SystemView的GSM系统设计与仿真
SystemView如何在通信系统仿真中应用研究分析概述
在通用微控制器MSP430™中集成多种功能
基于SystemView的PCM通信系统仿真
基于SystemView的扩频通信系统仿真研究
基于SystemVieW的多路载波通信系统仿真
基于Systemview的脉冲编码调制系统仿真
用Systemview实现对QPSK系统的仿真与分析
如何在OpenMV生态系统中集成STM32Cube.AI生成的代码
裸机系统中以任务方式高效利用SystemView调试分析

如何在裸机系统中集成SystemView
评论