RTT Viewer是Segger公司提供的一个实时终端工具,用于通过J-Link、ST-Link等调试器与嵌入式系统进行交互,实现实时的数据交换和调试信息输出。RTT(Real-Time Transfer)技术允许开发者在不占用硬件UART资源的情况下,高效地从目标MCU向主机发送调试信息或接收控制命令。
API介绍
集成Segger RTT功能时,会用到Segger RTT库的API来实现数据的发送和接收。以下是一些常用的Segger RTT库API介绍:
- 初始化与配置API:
SEGGER_RTT_Init()
:初始化RTT系统。一般在程序启动时调用一次。SEGGER_RTT_ConfigUpBuffer()
:配置一个上行(Target到Host)的RTT缓冲区(通道)。参数包括通道索引、缓冲区地址、大小、模式等。SEGGER_RTT_ConfigDownBuffer()
:配置一个下行(Host到Target)的RTT缓冲区,如果双向通信需要。
- 数据发送API:
SEGGER_RTT_printf()
:格式化输出数据到RTT缓冲区,类似于C语言的printf
,是最常用的输出函数。SEGGER_RTT_Write()
:直接写入原始数据到RTT缓冲区,适用于非字符串数据的传输。SEGGER_RTT_SetTerminal()
:设置当前使用的终端,如果配置了多个终端。
- 数据接收API(如果支持下行通道):
SEGGER_RTT_Read()
:从下行缓冲区读取数据。SEGGER_RTT_GetKey()
:在支持的环境中,可以从RTT接收键盘输入(如果下行通道配置并启用)。
- 控制与状态API:
SEGGER_RTT_IsTerminalValid()
:检查指定的终端是否有效。SEGGER_RTT_GetBufferInfo()
:获取缓冲区的状态信息,如已满、空闲空间大小等。
- 高级或特殊用途API:
SEGGER_RTT_Syscalls()
:在某些特定环境下,用于替换系统调用,比如在RTOS中。SEGGER_RTT_LOCK()
和SEGGER_RTT_UNLOCK()
:提供简单的锁定机制,用于防止多线程环境下的并发访问问题。
移植
-
获取RTT库:确保你的项目中包含了Segger的RTT库文件,这通常包括
SEGGER_RTT.h
头文件和相应的实现文件(如SEGGER_RTT.c
)。这些文件可能随J-Link软件套件提供,或者你需要从Segger的官方网站下载。 -
初始化RTT:包含头文件
#include "SEGGER_RTT.h"
在你的程序代码中,调用适当的初始化函数来设置RTT。例如,使用SEGGER_RTT_Init()
初始化RTT系统(可以不初始直接调用打印接口也会初始化)。示例代码:SEGGER_RTT_Init();
-
配置通道:通过调用如
SEGGER_RTT_ConfigUpBuffer()
之类的函数来配置RTT的输出缓冲区(通道)。你可以设置多个通道,每个通道有不同的用途,如日志、调试信息等(默认初始化了0通道,需要使用其他通道需要进行配置缓存区)。 -
使用RTT输出:在你的代码中,使用
SEGGER_RTT_printf()
或其他RTT提供的函数来代替传统的printf
,将数据发送到RTT Viewer(默认Terminal 0显示)。SEGGER_RTT_WriteString(0, "SEGGER Real-Time-Terminal Sample\r\n\r\n"); SEGGER_RTT_WriteString(0, "###### Testing SEGGER_printf() ######\r\n"); SEGGER_RTT_printf(0, "RTT Viewer start\r\n");
rtt viewer使用方法
1.安装RTT Viewer
- 下载安装Segger J-Link软件套件:首先,确保从Segger的官方网站下载并安装最新版本的J-Link软件套件,因为RTT Viewer通常是作为该套件的一部分提供的。
- 启动RTT Viewer:安装完成后,可以从J-Link安装目录下找到并启动RTT Viewer应用程序。
2. 连接到目标硬件
-
确保硬件连接:使用J-Link或其他兼容的调试器将电脑与目标嵌入式硬件相连。
-
打开RTT Viewer:在RTT Viewer界面,通常它会自动尝试连接到已连接的硬件上的RTT服务。
-
RTT控制块的地址:在编译工程中搜索
_SEGGER_RTT
查看地址。 -
手动配置(如有必要):如果自动连接失败,你可能需要手动配置连接设置,如选择正确的CPU类型、指定RTT控制块的地址等。
3.使用shell类工具连接
4.打印信息查看
JLINK RTT Viewar
MobaXterm