
什么是RTT? RTT(Real Time Transfer)是一种用于嵌入式中与用户进行交互的技术,它结合了SWO和半主机的优点,具有极高的性能。 使用RTT可以从MCU非常快速输出调试信息和数据,且不影响MCU实时性。这个功能可以用于很多支持J-Link的设备和MCU,兼容性强。 RTT支持两个方向的多个通道,上到主机,下到目标,它可以用于不同的目的,为用户提供尽可能多的使用方式。默认实现每个方向使用一个通道,用于可打印终端输入和输出。 使用J-Link RTT Viewer,可用于“虚拟”终端,允许打印到多个窗口(例如:一个用于标准输出,一个对于错误输出,一个用于调试输出)。 ![]() 图1:J-Link RTT RTT的工作原理 RTT在MCU的存储器中使用SEGGER RTT控制块结构管理数据读写。该控制块包含一个ID,以使其可以通过连接的J-Link在内存中找到control block,并且为每个可用通道提供一个环形缓冲区结构,描述通道缓冲区及其状态。 可用信道的最大数目可以在编译时配置,并且每个缓冲区都可以在MCU运行时配置和使用。上下缓冲区可以分开处理。每个通道都可以配置为阻塞或非阻塞。 在阻塞模式下,应用程序将等待缓冲区写满,直到可以写入所有内存为止,这将导致应用程序处于阻塞状态,但可以防止数据丢失。 在非阻塞模式下,只会写入适合缓冲区的数据,或完全不写入缓冲区,其余的数据将被丢弃。这样即使没有连接调试器,也可以实时运行。开发人员不必创建特殊的调试版本,并且代码可以保留在发布应用程序中。 ![]() 图2:RTT工作原理图 RTT的性能 SEGGER RTT的性能明显高于其他任何用于将数据输出到主机PC的方式。平均一行文本可以在1微秒或更短的时间内输出。基本上相当于做一个memcopy()的时间。 ![]() 图3:RTT,SWO,Semihosting的性能对比图 如何使用RTT 相关工具: 1、IAR EWARM 8.50.9 2、J-Link V6.92驱动包 3、STM32F411RE (1)首先下载Segger的J-Link的驱动包https://www.segger.com/downloads/jlink/JLink_Windows.exe,下载之后完成安装。 (2)完成安装之后,根据你安装时的路径,找到J-Link驱动包的安装位置,找到如下路径SEGGER\JLink_V692\Samples\RTT,解压路径里的SEGGER_RTT_V692.zip,不同版本的驱动包V后面的数字不同。 ![]() 图4:RTT代码 (3)将解压后的文件夹拷贝到所在工程目录 (4)在IAR EWARM项目工程中,创建RTT Group,将SEGGER_RTT_V692\RTT目录下的SEGGER_RTT.c和SEGGER_RTT_printf.c添加到RTT中,添加include路径SEGGER_RTT_V692\RTT。 ![]() 图5:添加文件
![]() 图6:添加include路径 ' Y8 V* u7 k) w! ?(5)工程加入文件后,在想使用RTT的文件添加 #include “SEGGER_RTT.h” ,就可以调用SEGGER_RTT_printf()。SEGGER_RTT_printf(0,”hello world!”); 的语法格式与C语言中printf类似,只不过在前面加了个参数0,表示0通道。 (6)在开始菜单→SEGGER J-Link V6.92→J-Link RTT Viewer,打开之后,选择USB连接J-Link,选择你的芯片型号,这里选择STM32F411RE,接口、接口速度和RTT控制块默认即可。 ![]() 图7:连接J-Link RTT Viewer 确保RTT Viewer连接上,连接成功后,在下面的log框中,会有如下显示。 ![]() 图8:J-Link RTT Viewer连接成功 (7)在工程中main函数的while循环中加 SEGGER_RTT_printf(0, "hello, rtt \n"); 构建工程,Download and Debug调试,全速执行,输出如图所示,成功使用J-Link RTT打印数据。 ![]() 图9:RTT数据传输 ; N+ v. }, ~/ s9 W4 P, T: pSEGGER RTT可与任何J-Link和支持后台内存访问的受支持目标处理器一起使用,可以从目标处理器输出信息,并以非常高的速度将输入发送到应用程序,而不会影响目标的实时行为。 |
STM32 ISP IQTune:真正零门槛的免费ISP调整软件
【经验分享】STM32 新建基于STM32F40x 固件库的MDK5 工程
意法半导体MCU双供应链策略,打消中国客户后顾之忧
OpenBLT移植到STM32F103战舰开发板上适用于所有STM32F103系列的Bootloader
【经验分享】基于STM32使用HAL库实现USB组合设备CDC+MSC
【经验分享】STM32实例-RTC实时时钟实验④-获取RTC时间函数与中断服务函数
2024意法半导体工业峰会:赋能智能电源和智能工业,构筑可持续未来
ST推出灵活、面向未来的智能电表通信解决方案,助力能源转型
意法半导体 x Qu-Bit Electronix:推动新一轮的数字声音合成革命
从STM32 MPU产品看嵌入式系统中微处理器的新变化