Real Time Transfer(简称RTT)是Segger公司推出的用于嵌入式系统监控和交互的工具,其融合了SWO(SWD调试技术中的调试日志输出)等能力,且具备极高的性能。RTT的技术特点如下:
RTT能够在不影响嵌入式应用的实时行为下,能够高速双向通信,既可以输出调试信息,也能够从外部输入相关的控制命令。RTT可以在两个传输方向(输出和输入)上支持多个通道,不同的通道可用于不同的目的。
在嵌入式设备开发时,需要使用硬件接口完成软件调试,如打印一些调试信息,而通常大家都是使用UART接口,实现日志信息打印的,那有了UART接口,且UART接口大家都比较熟悉,为何还要用RTT呢?下面汇总一下RTT接口使用的场景:
使用Jlink调试器,USB端口连接PC,SWD端口连接嵌入式设备,如下图所示:
PC上可使用J-link RTT viewer工具(https://www.segger.com/downloads/jlink/),完成调试数据的收发,且可以有多个虚拟终端,可以用来打印不同的信息(如一个窗口做标准输出,一个窗口做错误信息的输出,一个窗口做调试信息输出)
J-Link RTT Viewer是主要的Windows的GUI应用,用来使用RTT调试的所有功能。RTT Viewer可以单独使用,开启一个连接到J-Link,或者在运行调试会话时并行使用,RTT Viewer支持所有RTT的主要功能:
关于J-Link RTT Viewer的详细说明可参考J-Link用户指南文档(https://wiki.segger.com/UM08001_J-Link_/_J-Trace_User_Guide#RTT)。
通过RTT通信,可以使用任何J-Link。通过终端(通道0)进行通信的简单方法是,当到J-Link的连接处于活动状态时,使用Telnet客户机或类似的设备创建到localhost:19021的连接。
详细的工作原理可阅读官方介绍:
https://www.segger.com/products/debug-probes/j-link/technology/about-real-time-transfer/
https://github.com/supperthomas/RTTHREAD_SEGGER_TOOL