SystemView是嵌入式系統(tǒng)可視化分析工具,提供了對(duì)應(yīng)用程序的完整洞察,包括時(shí)間軸、CPU負(fù)載、運(yùn)行時(shí)間信息、上下文運(yùn)行時(shí)信息等可視化窗口,能夠幫助開(kāi)發(fā)者獲得對(duì)應(yīng)用運(yùn)行時(shí)行為的深入理解。除μC/OS-II、μC/OS-III、FreeRTOS、embOS外,SystemView也支持無(wú)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編號(hào)從33開(kāi)始:
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 ();對(duì)無(wú)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開(kāi)始處調(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編號(hào)
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)用程序并啟動(dò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文章
3669瀏覽量
131026 -
cpu
+關(guān)注
關(guān)注
68文章
11053瀏覽量
216255 -
SystemView
+關(guān)注
關(guān)注
5文章
53瀏覽量
24864 -
裸機(jī)
+關(guān)注
關(guān)注
0文章
40瀏覽量
6643
原文標(biāo)題:在裸機(jī)系統(tǒng)中使用SystemView
文章出處:【微信號(hào):麥克泰技術(shù),微信公眾號(hào):麥克泰技術(shù)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
如何在Eclipse ThreadX RTOS中集成SystemView
如何在Linux/Android系統(tǒng)中集成壓力傳感器和濕度傳感器?
如何在PSoC設(shè)計(jì)器5.4版本中集成HiTeX編譯器PRO?
SystemView如何在RT-Thread上對(duì)系統(tǒng)進(jìn)行調(diào)試分析?
如何在項(xiàng)目中使用RTOS分析工具SystemView?
基于SystemView的GSM系統(tǒng)設(shè)計(jì)與仿真

SystemView如何在通信系統(tǒng)仿真中應(yīng)用研究分析概述

在通用微控制器MSP430?中集成多種功能

基于SystemView的PCM通信系統(tǒng)仿真

基于SystemView的擴(kuò)頻通信系統(tǒng)仿真研究

基于SystemVieW的多路載波通信系統(tǒng)仿真

基于Systemview的脈沖編碼調(diào)制系統(tǒng)仿真

用Systemview實(shí)現(xiàn)對(duì)QPSK系統(tǒng)的仿真與分析

如何在OpenMV生態(tài)系統(tǒng)中集成STM32Cube.AI生成的代碼

裸機(jī)系統(tǒng)中以任務(wù)方式高效利用SystemView調(diào)試分析

評(píng)論