本文博客链接:http://blog.csdn.net/bjr2016,作者:bjr2016,未经允许不得转载.
本节描述了如何使用SystemView程序进行连续的记录,和如何使用调试器手动进行单次记录。
基于J-Link调试探针技术和SEGGER实时传输技术(RTT),SystemView可以在目标程序运行时实时地记录目标执行情况。RTT需要在程序执行过程中通过调试接口读取内存的能力。这特指包括ARM Cortex-M0、M0 +、M1、M3、M4和M7处理器以及所有的Renesas RX设备。
SystemView使用J-Link是如何工作的
开始录制
要使用SystemView开始记录,首先需要连接J-Link和目标板,并单击Target->Start Recording。
输入或者选择设备名。下拉列表会列举最近使用的设备。如果当前设备不是列表的一部分,可以手动输入。可以在 https://www.segger.com/jlink_supported_devices.html 查看支持的设备名。
注意
对于RTT控制块自动检测,以及对于某些设备来说,准确的设备必须是已知的。建议不要仅仅选择一个核心。(brj2016注:比如只选Cortex-m0,而不选择具体的芯片名)。
如果连接到一个特定的J-Link或者一个通过TCP / IP连接的J-Link时,需要配置J-Link连接。
选择连接目标设备的接口和接口速度。
配置RTT控制块检测。在大多数情况下可以使用自动检测。如果RTT控制块不能被检测到,则选择一个RTT控制块的搜索范围,或者直接输入准确的地址。
单击 OK 来连接到目标设备并开始录制。
注意
SystemView可以与调试器同时使用。在这种情况下,正在进行调试时可以同时进行记录。确保在调试器中完成了所有必需的配置。当调试器停止时,SystemView记录也会停止。
SystemView会连续地从目标板读取数据,并在运行时更新窗口。
停止录制
要停止录制,选择 Target->Stop Recording。
免费版本的SystemView只能录制1 000 000个事件,之后会自动停止。
这里的Single-shot是指 只录制一个事件的意思,而不是单次录制直到停止录制
当目标设备不支持RTT或没有使用J-Link时,SEGGER SystemView可以用于记录数据,直到其目标缓冲区被填充满。
在Single-shot模式下,在应用程序中手动启动录制,只允许录制特定的感兴趣的部分。
由于通常的应用程序每秒可以生成大约5到15个kByte的记录数据,而在100%负载时能达到更高的速率,甚至内部RAM中的一个小缓冲区也可以用于记录关键部分的分析数据。当使用外部RAM SystemView时,即使是在Single-shot模式下也可以记录很长时间。
在Single-shot模式下SystemView如何工作
从系统中获取single-shot数据
要获取录制在single-shot模式下的数据,必须通过SystemView程序或外部调试器读取SystemView缓冲区。
SystemView可以使用J-Link从目标板自动读取single-shot数据。
在没有J-Link或者没有SystemView的情况下,可以通过下列步骤读取数据:
为了能够录制不止一次,缓冲写入偏移量(_SEGGER_RTT.aUp[1]. WrOff)可以在读取数据时设置为0。为了防止发生SystemView溢出事件,应该在缓冲区填满且不能保存下一个SystemView事件时停止应用程序。
Post-mortem分析和single-shot很像,但有一个区别:SystemView事件会被连续地记录下来,而SystemView缓冲区会在缓冲区填满时覆盖旧的事件。在读取缓冲区时,可以读取到最新的事件。
当系统运行很长时间并突然崩溃时,Post-mortem分析会很有用。在这种情况下,可以从目标板读取读取SystemView缓冲区,SystemView程序可以显示系统在崩溃前发生的情况。
注意
使用Post-mortem分析,调试器必须连接在目标设备上。(不需要复位设备或者修改RAM)。
为了得到尽可能多的有用数据,建议给SystemView配置一个大的缓冲区(大于等于8k字节)。外部RAM可以用作SystemView缓冲区。
为了配置目标系统为Post-mortem模式,请参阅第59页的章节目标配置中的 SEGGER_SYSVIEW_POST_MORTEM_MODE 和 SEGGER_SYSVIEW_SYNC_PERIOD_SHIFT 。
从系统中获得Post-mortem数据
要获取在Post-mortem模式中记录的数据,必须通过SystemView应用程序或外部调试器读取SystemView缓冲区。
使用J-Link,SystemView程序可以自动从目标板读取post-mortem数据。
在没有J-Link或者没有SystemView的情况下,可以通过下列步骤读取数据:
SystemView可以使用J-Link从目标板自动读取single-shot数据。
在没有J-Link或者没有SystemView的情况下,可以通过下列步骤读取数据:
由于SystemView缓冲区是一个环形缓冲区,因此数据可能需要在两个块中读取,以便在开始时开始读取数据,并尽可能多地保存数据
当停止记录时,可以将记录的数据保存到文件中,以便稍后进行分析和文档化。选择 File->Save Data。记录属性对话框弹出,允许保存标题、作者和数据文件的描述。单击OK。选择保存目录并单击Save。
可以通过File->Load Data打开已保存的数据。也可以通过File->Recent菜单看到最近使用的数据文件。SystemView程序可以打开.bin和。SVDat 文件。