SystemView是嵌入式系統(tǒng)可視化分析工具,提供了對應用程序的完整洞察,包括時間軸、CPU負載、運行時間信息、上下文運行時信息等可視化窗口,能夠幫助開發(fā)者獲得對應用運行時行為的深入理解。除μC/OS-II、μC/OS-III、FreeRTOS、embOS外,SystemView也支持無OS的裸機系統(tǒng)分析,深入地了解應用。
本文將解釋如何在裸機系統(tǒng)中集成SystemView。
集成操作步驟如下:
1、在Embedded Studio中為使用的設備創(chuàng)建一個新項目
2、將SystemView安裝目錄下的/SEGGER、/Config文件夾中的所有文件和Sample/NoOS/Config/Cortex-M/SEGGER_SYSVIEW_Config_NoOS.c代碼文件添加到項目中

3、在SystemViewDescription目錄下創(chuàng)建一個名為SYSVIEW_NoOS.txt的文件,將需記錄的函數(shù)添加到該文件中,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中,修改函數(shù) _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()函數(shù)中調用SEGGER_SYSVIEW_Conf ();對無os的應用,將整個系統(tǒng)視為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應用中初始化系統(tǒng)節(jié)拍時鐘,在節(jié)拍處理程序Systick_Handler開始處調用SEGGER_SYSVIEW_RecordEnterISR ();結束時調用SEGGER_SYSVIEW_RecordExitISR()
void SysTick_Handler(void) {
volatile U32 Cnt;
SEGGER_SYSVIEW_RecordEnterISR();
Cnt++;
SEGGER_SYSVIEW_RecordExitISR();
}
9、在應用程序調用需記錄的函數(shù),如_TestFunc0()
10、在Description列表中的每個函數(shù)中,調用SEGGER_SYSVIEW_RecordVoid(ID)及 SEGGER_SYSVIEW_RecordEndCall(ID),參數(shù)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設備。
審核編輯:湯梓紅
-
嵌入式系統(tǒng)
+關注
關注
41文章
3702瀏覽量
132810 -
cpu
+關注
關注
68文章
11192瀏覽量
221872 -
SystemView
+關注
關注
5文章
53瀏覽量
25197 -
裸機
+關注
關注
0文章
40瀏覽量
6874
原文標題:在裸機系統(tǒng)中使用SystemView
文章出處:【微信號:麥克泰技術,微信公眾號:麥克泰技術】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
如何在Eclipse ThreadX RTOS中集成SystemView
如何在Linux/Android系統(tǒng)中集成壓力傳感器和濕度傳感器?
如何在PSoC設計器5.4版本中集成HiTeX編譯器PRO?
SystemView如何在RT-Thread上對系統(tǒng)進行調試分析?
如何在項目中使用RTOS分析工具SystemView?
基于SystemView的GSM系統(tǒng)設計與仿真
SystemView如何在通信系統(tǒng)仿真中應用研究分析概述
在通用微控制器MSP430?中集成多種功能
基于SystemView的PCM通信系統(tǒng)仿真
基于SystemView的擴頻通信系統(tǒng)仿真研究
基于SystemVieW的多路載波通信系統(tǒng)仿真
基于Systemview的脈沖編碼調制系統(tǒng)仿真
用Systemview實現(xiàn)對QPSK系統(tǒng)的仿真與分析
如何在OpenMV生態(tài)系統(tǒng)中集成STM32Cube.AI生成的代碼
裸機系統(tǒng)中以任務方式高效利用SystemView調試分析

如何在裸機系統(tǒng)中集成SystemView
評論