SystemView是嵌入式系統(tǒng)可視化分析工具,提供了對應(yīng)用程序的完整洞察,包括時間軸、CPU負載、運行時間信息、上下文運行時信息等可視化窗口,能夠幫助開發(fā)者獲得對應(yīng)用運行時行為的深入理解。除μC/OS-II、μC/OS-III、FreeRTOS、embOS外,SystemView也支持無OS的裸機系統(tǒng)分析,深入地了解應(yīng)用。
本文將解釋如何在裸機系統(tǒng)中集成SystemView。
集成操作步驟如下:
1、在Embedded Studio中為使用的設(shè)備創(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為使用設(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)用,將整個系統(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é)拍時鐘,在節(jié)拍處理程序Systick_Handler開始處調(diào)用SEGGER_SYSVIEW_RecordEnterISR ();結(jié)束時調(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列表中的每個函數(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ī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è)備名稱,即可將該項目可以用于其他Cortex-M4設(shè)備。
審核編輯:湯梓紅
-
嵌入式系統(tǒng)
+關(guān)注
關(guān)注
41文章
3551瀏覽量
129104 -
cpu
+關(guān)注
關(guān)注
68文章
10804瀏覽量
210829 -
SystemView
+關(guān)注
關(guān)注
5文章
50瀏覽量
24481 -
裸機
+關(guān)注
關(guān)注
0文章
39瀏覽量
6329
原文標(biāo)題:在裸機系統(tǒng)中使用SystemView
文章出處:【微信號:麥克泰技術(shù),微信公眾號:麥克泰技術(shù)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論