如何在裸机系统中集成SystemView

描述

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代码文件添加到项目中

SystemView

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记录应该如下图:

SystemView

基于STM32F407+Embedded Studio的“NoOS”Systemview集成示例工程,下载链接:https://wiki.segger.com/images/8/89/SysView_NoOS_GenericCortexM4_Example.zip

仅需修改目标设备名称,即可将该项目可以用于其他Cortex-M4设备。

  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分