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

3、在SystemViewDescription目錄下創(chuàng)建一個(gè)名為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為使用設(shè)備的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);
}
設(shè)置SYSVIEW_RAM_BASE為目標(biāo)設(shè)備的RAM基地址;
// The lowest RAM address used for IDs (pointers) #define SYSVIEW_RAM_BASE (0x20000000)
7、在main()函數(shù)中調(diào)用SEGGER_SYSVIEW_Conf ();對無os的應(yīng)用,將整個(gè)系統(tǒng)視為idle空閑任務(wù),調(diào)用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應(yīng)用中初始化系統(tǒng)節(jié)拍時(shí)鐘,在節(jié)拍處理程序Systick_Handler開始處調(diào)用SEGGER_SYSVIEW_RecordEnterISR ();結(jié)束時(shí)調(diào)用SEGGER_SYSVIEW_RecordExitISR()
void SysTick_Handler(void) {
volatile U32 Cnt;
SEGGER_SYSVIEW_RecordEnterISR();
Cnt++;
SEGGER_SYSVIEW_RecordExitISR();
}
9、在應(yīng)用程序調(diào)用需記錄的函數(shù),如_TestFunc0()
10、在Description列表中的每個(gè)函數(shù)中,調(diào)用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、運(yùn)行應(yīng)用程序并啟動SystemView記錄。
如果構(gòu)建成功,SystemView記錄應(yīng)該如下圖:

基于STM32F407+Embedded Studio的“NoOS”Systemview集成示例工程,下載鏈接:https://wiki.segger.com/images/8/89/SysView_NoOS_GenericCortexM4_Example.zip
僅需修改目標(biāo)設(shè)備名稱,即可將該項(xiàng)目可以用于其他Cortex-M4設(shè)備。
審核編輯:湯梓紅
-
嵌入式系統(tǒng)
+關(guān)注
關(guān)注
41文章
3717瀏覽量
133157 -
cpu
+關(guān)注
關(guān)注
68文章
11224瀏覽量
223113 -
SystemView
+關(guān)注
關(guān)注
5文章
54瀏覽量
25270 -
裸機(jī)
+關(guān)注
關(guān)注
0文章
41瀏覽量
6915
原文標(biāo)題:在裸機(jī)系統(tǒng)中使用SystemView
文章出處:【微信號:麥克泰技術(shù),微信公眾號:麥克泰技術(shù)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
如何在Eclipse ThreadX RTOS中集成SystemView
如何在Linux/Android系統(tǒng)中集成壓力傳感器和濕度傳感器?
如何在PSoC設(shè)計(jì)器5.4版本中集成HiTeX編譯器PRO?
SystemView如何在RT-Thread上對系統(tǒng)進(jìn)行調(diào)試分析?
如何在項(xiàng)目中使用RTOS分析工具SystemView?
如何在MSP430?微控制器 (MCU) 中集成多種功能
基于SystemView的GSM系統(tǒng)設(shè)計(jì)與仿真
SystemView如何在通信系統(tǒng)仿真中應(yīng)用研究分析概述
在通用微控制器MSP430?中集成多種功能
基于SystemView的PCM通信系統(tǒng)仿真
基于SystemVieW的多路載波通信系統(tǒng)仿真
基于Systemview的脈沖編碼調(diào)制系統(tǒng)仿真
用Systemview實(shí)現(xiàn)對QPSK系統(tǒng)的仿真與分析
如何在OpenMV生態(tài)系統(tǒng)中集成STM32Cube.AI生成的代碼
裸機(jī)系統(tǒng)中以任務(wù)方式高效利用SystemView調(diào)試分析

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