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