SystemView
SEGGER SystemView可以用來監控RTOS中的線程切換,中斷的進入、退出,在沒有操作系統的時候可以用來監控中斷的執行情況。這一切只需要你連接了JLink,不需要額外的接線。另外還附送一個Terminal,這個Terminal原來叫做JLinkRTT,即 Real Time Terminal,現在可能改名叫Real Time Transfer了,然后基于這個技術開發了SystemView(這些都是我猜的 ),這個在有RTOS的地方可以肯定是非常有用的,不過我現在用在沒有OS的地方,監控下中斷也挺好嘛,還省了uart接口了。
首先下載SystemView安裝 (在Ubuntu下并沒有生成.desktop文件,我是從命令行打SystemView
命令啟動的),然后下載SystemView Target Sources,解壓。
然后把Sample/Config
目錄下的SEGGER_SYSVIEW_Config_NoOS.c文件復制到Config
目錄下。然后將Config
和SEGGER
目錄下的所有文件都添加到工程中。
像手冊中敘述的一樣,在main函數所在的文件添加#include "SEGGER_SYSTEM.h"
,然后調用SEGGER_SYSVIEW_Conf()
,初始化SystemView功能。在中斷文件中添加#include "SEGGER_SYSTEM.h"
,中斷進入的地方添加SEGGER_SYSVIEW_RecordEnterISR()
退出的地方添加SEGGER_SYSVIEW_RecordExitISR()
,要打印信息的地方添加SEGGER_SYSVIEW_Print(const char * s)
。
然后連接JLink,打開SystemView軟件,就可以看到中斷信息了。
如果SystemView軟件顯示找不到RTT control block,可以在map文件中查找_SEGGER_RTT
的地址,然后監控的時候不使用自動查找,而使用固定地址,或者指定查找的范圍,我是用的查找范圍0x2003e000 2048
關于操作系統中的移植可以參考RT-Thread的,segger_debug