RTT 查看器未识别 Segger RTT 控制块

Posted

技术标签:

【中文标题】RTT 查看器未识别 Segger RTT 控制块【英文标题】:Segger RTT control block is not identified by RTT viewer 【发布时间】:2020-07-03 15:00:26 【问题描述】:

我正在尝试使用 Segger 的 RTT (Real Time Transfer), 但我无法在 RTT 查看器上看到任何输出。 我怀疑根本原因是 RTT 查看器未识别 RTT 控制块。

设置

主机 PC 使用 Seggers 连接 J-Link 调试器(JTAG 接口)到基于 ARM-CORTEX-M4 的板,如下所示:

[PC] <---- J-Link -----> [ generic CORTEX-M4 board]

我正在努力实现的目标

我正在尝试集成 Segger 特有的 RTT 功能,但我无法在主机 PC 上的 RTT 查看器软件中看到来自 RTT 的打印件

    segger提供的集成代码

    SEGGER_RTT_Conf.h
    SEGGER_RTT_printf.c
    SEGGER-RTT.c
    SEGGER_RTT.h
    

    在我的主文件中包含 SEGGER_RTT.h 并添加了一个调用

    SEGGER_RTT_WriteString(0, "Hello World from SEGGER RTT!\r\n");
    

    main()内。

    使用Eclipse和arm-none-eabi-工具链编译应用程序,以及

    JLINK_GDBserverCL.exe -- 调试服务器 arm-none-eabi-gdb -- 调试客户端 Segger J-Link -- 硬件调试器(连接其 JTAG 接口)

    在主机 PC 上使用 RTT 查看器软件在步骤 #2 中接收打印。

我希望在第 3 步中看到打印,请帮助我继续。

【问题讨论】:

你设置搜索范围了吗?设置RTTSearchRanges 我发现在 JLinkGdbServer 运行时使用 RTT(通过 Segger SysView)非常间歇性地工作( 【参考方案1】:

您需要在调用 JLinkRTTViewer / JLinkRTTClient 时指定要连接的特定设备,或者您需要在 .map 文件中找到“_SEGGER_RTT”的内存地址并将其传递给工具。

【讨论】:

以上是关于RTT 查看器未识别 Segger RTT 控制块的主要内容,如果未能解决你的问题,请参考以下文章

SEGGER调试利器RTT,替代串口,高速数据上传

SEGGER调试利器RTT,替代串口,高速数据上传

SEGGER RTT STOP/SLEEP 模式下使用

RTT使用技巧

安富莱专题教程第6期SEGGER的J-Scope波形上位机软件,RTT模式波形上传速度可狂飙到500KB/S左右

嵌入式芯片调试神器-J-Link RTT详解