0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Tracealyzer实现流跟踪最简单的方法

我快闭嘴 来源:麦克泰技术 作者:麦克泰技术 2022-09-02 11:11 次阅读

Tracealyzer 实现流跟踪最简单的方法就是使用SEGGER J-Link调试器,通过RTT功能来实现数据的传送。RTT需要在RAM上建立一段缓存,在目标系统运行期间,由J-Link读取缓存中的数据。一般来说RTT的速度和可靠性比较高,但是如果您遇到了问题,可以参照以下方法尝试排除。

常规

检查

1、检查是否正确的集成了Tracealyzer跟踪记录器库,以及是否根据J-Link RTT流模式进行了正确配置,请对照产品手册检查。

2、安装最新的J-Link驱动。SEGGER经常更新驱动,IDE和Tracealyzer使用的J-link驱动通常不是最新版本。一定要让Tracealyzer和IDE使用相同的驱动版本。

3、 “PSF Streaming Settings”中的设置要符合记录器中的配置。

如果使用vTraceEnable(TRC_INIT),“Target Starts Tracing”和“Reset Target onConnect”不要勾选;

如果使用vTraceEnable(TRC_START),“Target Starts Tracing”保持勾选。

4、在Tracealzyer中检查J-Link设置。J-Link的速度和协议(JTAG/SWD)要与IDE中的设置一致。

5、检查Tracealyzer跟踪记录器库的.c和.h文件是否是同一版本。

接收不到数据

1、如果按了“Starting Recording”之后,Live Stream窗口没有接收到数据或者出现报错,比较可能的问题是J-Link驱动不能检测到RTT控制块。从电脑任务栏绿色的“J”小图标,打开J-Link控制面板。在RTT页中,状态应该显示“Located RTT control block”。如果显示“RTT Handled by other J-Link instance”,任务栏找到另外一个J-Link实例并查看状态。

8eff25f8-2a6c-11ed-ba43-dac502259ad0.jpg

如果状态显示“Looking for RTT CB @…”,说明驱动没有找到RTT控制块,在IDE中查找到“_SEGGER_RTT”符号的地址(通过IDE的watch窗口或printf输出),填入RTT页的“Control block address”,然后点“Start”,或者在Tracealyzer PSF Streaming Settings设置地址。重新连接,然后应该就可以建立连接了。但要注意,每次重构建代码地址可能会变化,需要手动更新一遍。

2、脱离Tracealyzer,验证J-Link RTT通讯

先关闭Tracealyzer,下载J-Link驱动包并安装,找到JLinkRTTLogger工具。在程序中禁用Tracealyzer,并在main函数中加入如下内容:

#include “SEGGER_RTT.h”

SEGGER_RTT_Init();

SEGGER_RTT_WriteString(0, “Hello!”);

启动JLinkRTTLogger,按要求输入信息,默认值通常是1,只需按回车键接受。如果JLinkRTTLogger能获取到数据,说明RTT通讯是正常的,问题很可能是Tracealyzer跟踪记录器库的配置问题。

8f0bb034-2a6c-11ed-ba43-dac502259ad0.jpg

事件丢失

在某些情况下,产生的数据超过J-Link的传输速度,就会导致RTT缓存写满,新产生的事件就会丢失,直到再次有可用的缓存。出现事件丢失的情况,在Tracealyzer的Live Stream窗口就会报告“Missed Events”,此外,实时视图中的红色区域显示了数据丢失的位置,如下图:

8f29bc82-2a6c-11ed-ba43-dac502259ad0.jpg

如果出现事件丢失,按照以下步骤进行操作:

1、在Tracealyzer接收数据时,打开J-Link控制面板,确定选择“Process: Tracealyzer.exe”。检查J-Link控制面板中的“Target interface”数值是否与Tracealyzer中的“J-Link Speed”设置的一致。

8f4e434a-2a6c-11ed-ba43-dac502259ad0.jpg

如果两者不一致,存在两种情况:

如果指定的速度高于J-Link所支持的速度,则驱动程序将使用所支持的最高速度(上图中,是2667 KHz而不是4000 KHz),速度不能再增大,除非选用更高速型号的J-Link。

在某些情况下,驱动程序可能会忽略Tracealyzer中的“J-Link Speed”设置,而使用默认的200KHz。解决这个问题,“Debugger Interface”中设置实际使用的调试协议(JTAG/SWD),不要使用默认设置。

2、如果两者一致,可以在“J-Link Speed”适当增大速度(默认是4000KHz),前提是J-Link支持更高的速度。各型号J-Link支持的最高速度可点击“阅读原文”查看。

3、在trcStreamingPort.h中增大TRC_CFG_RTT_

BUFFER_SIZE_UP,以增加RTT的缓存。

4、在trcConfig.h或者使用vTraceSetFilterMask() 和vTraceSetFilterGroup()过滤跟踪的事件类型,减少产生的事件数量。

总结

如果J-Link RTT 流跟踪遇到问题,首先应该根据Tracealyzer手册检查记录库的配置,如果出现事件丢失,最有效的方法是提高J-Link的速度设置,增大RTT缓存,或者减少产生的事件数量。

审核编辑:汤梓红

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

    关注

    0

    文章

    63

    浏览量

    16881
  • 调试器
    +关注

    关注

    1

    文章

    288

    浏览量

    23405
  • J-Link
    +关注

    关注

    0

    文章

    77

    浏览量

    21950

原文标题:Tracealyzer J-Link RTT流跟踪常见故障

文章出处:【微信号:麦克泰技术,微信公众号:麦克泰技术】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何通过Tracealyzer实现Linux系统的跟踪

    Tracealyzer是Percepio 公司开发的一款可视化跟踪工具, 目前它提供了30多种相互关联的运行时行为视图,支持裸机、FreeRTOS、μC/OS-III、Zephyr、ThreadX、VxWorks、Linux系统的跟踪
    的头像 发表于 12-08 14:08 560次阅读
    如何通过<b class='flag-5'>Tracealyzer</b><b class='flag-5'>实现</b>Linux系统的<b class='flag-5'>跟踪</b>?

    Tracealyzer 技术分享

    有两种方式1.Snapshot Mode(快照模式)特点:跟踪的数据保存在目标RAM中,几KB的跟踪缓冲区通常足以获得最新事件的可靠跟踪。基本上任何系统都可以使用。2.Streaming Mode(
    发表于 01-04 21:10

    教你快递入门-Tracealyzer跟踪记录库移植

    。使用Tracealyzer,可以查看到系统的真实运行情况,为开发人员节省排除错误的时间。Tracealyzer由PC应用程序和跟踪组件组成,Percepio提供了跟踪记录库(Trac
    发表于 07-31 14:08

    Tracealyzer利用CortexM的ITM实现跟踪

    事件,达到1175KB/s的传输速率。使用ARM-ITM模式下文将以IAR EWARM 8.40、I-jet调试器和Tracealyzer 4.35为例说明如何配置和使用ITM实现
    发表于 12-05 15:34

    如何使用Tracealyzer预先定义的记录器扩展文件实现用户应用程序跟踪

    被记录为“用户事件”。从Tracealyzer V4.2.9版本开始,增加了记录器扩展方式来跟踪用户应用程序。记录器扩展方式可以帮助用户实现中间件、驱动程序API等重要功能函数调用的跟踪
    发表于 12-18 13:37

    出现“丢失事件”?看Tracealyzer模式如何调优

    在使用自己定义的端口实现跟踪时,如果Tracealyzer提示了“丢失事件”,那么你可以参照以下几种
    发表于 02-19 10:06

    通过Tracealyzer用户事件来了解应用程序

    Tracealyzer跟踪记录器库的集成。可视化特定应用程序的自定义信息的第一步是创建一个用户事件通道。这是一个字符串输出通道,允许开发人员添加自己的自定义事件,在Tracealyzer中称为用户事件。例如,如果想要传输
    发表于 08-20 10:11

    使用Tracealyzer跟踪FreeRTOS内核

    程序,还需要可用于周期性任务的定时机制。大多数现有的开源 RTOS 实现了基于树或列表的机制来跟踪哪个任务已就绪。我们知道,基于树的机制在复杂搜索操作方面是高效和极时的,但在处理删除和插入操作上需花费
    发表于 12-01 14:57

    如何使用Tracealyzer模式跟踪ThreadX?

    Tracealyzer是Percepio 公司开发的一款用于RTOS的嵌入式软件系统的可视化跟踪工具,提供了30多种相互关联的可视化运行时行为视图,本文将介绍如何使用Tracealyzer
    发表于 09-23 13:25

    是否需要在iMXRT1060 EVK板上执行任何特定操作才能使tracealyzer正常工作?

    我有 iMXRT1060EVK,想在 FreeRTOS 的模式下使用 Tracealyzer。我正在使用 IAR EW 和 I-jet 调试探针。我已按照以下链接中的步骤进行操作,但数据仍然存在
    发表于 04-17 08:02

    使用Percepio的Tracealyzer和DevAlert实现FreeRTOS的可观察性!

    ,可使用相关桌面工具实现多种类型的调试数据。您可以获得Tracealyzer追踪,查看导致检测到异常的事件序列。此外,最近还新增了对GDB故障转储的支持,如下列屏幕截图所示。 GDB 故障转储屏幕截图
    发表于 05-18 13:41

    如何使用Tracealyzer的流模式来跟踪ThreadX应用

    Tracealyzer是Percepio 公司开发的一款用于RTOS的嵌入式软件系统的可视化跟踪工具,提供了30多种相互关联的可视化运行时行为视图,本文将介绍如何使用Tracealyzer的流模式来
    的头像 发表于 09-16 11:14 1086次阅读

    Tracealyzer跟踪记录库移植

    使用Tracealyzer,首先要将跟踪记录库集成到工程。安装了Tracealyzer 4之后,在安装路径下找到以RTOS名称命名的文件夹,将TraceRecorder子文件夹复制到自己的工程目录中。以FreeRTOS为例:
    的头像 发表于 11-08 11:17 1324次阅读

    Tracealyzer利用CortexM的ITM实现跟踪

    Tracealyzer快照模式,能够跟踪RTOS系统的运行时间受限于硬件可用的RAM大小,通常只能追踪几十秒的时间。使用流模式则不会存在这个问题,只要电脑硬盘空间足够,可用追踪几小时甚至几天的时间。
    的头像 发表于 12-20 11:12 1154次阅读

    如何通过Tracealyzer导出的跟踪数据对任务进行分析?

    Tracealyzer是Percepio 公司开发的一款用于RTOS的可视化跟踪工具, 目前Tracealyzer提供了30多种相互关联的运行时行为视图,对系统运行时的行为提供了前所未有的洞察
    的头像 发表于 02-06 14:13 757次阅读