3725|6

227

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

如何在IAR中使用J-Link RTT打印数据? [复制链接]

什么是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路径

 

(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数据传输

 

SEGGER RTT可与任何J-Link和支持后台内存访问的受支持目标处理器一起使用,可以从目标处理器输出信息,并以非常高的速度将输入发送到应用程序,而不会影响目标的实时行为。

最新回复

原来这样,还以为有其他用途   详情 回复 发表于 2021-4-27 19:32
点赞 关注
个人签名

欢迎关注“麦克泰技术”

 
 

回复
举报

6802

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

既然是默认实现每个方向使用一个通道,用于可打印终端输入和输出

为什么还要虚拟终端呢,再打印到多个窗口

 
 
 

回复

7608

帖子

2

TA的资源

五彩晶圆(高级)

板凳
 
Jacktang 发表于 2021-3-31 22:27 既然是默认实现每个方向使用一个通道,用于可打印终端输入和输出 为什么还要虚拟终端呢,再打印到多个窗 ...

节省硬件资源,打印出去的可以归类处理。

个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 
 

回复

7608

帖子

2

TA的资源

五彩晶圆(高级)

4
 

必须要swo吗?我现在用的m0就没有swo脚,不知道能不能用这个功能。

个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 
 

回复

227

帖子

0

TA的资源

一粒金砂(高级)

5
 
freebsder 发表于 2021-4-7 17:28 必须要swo吗?我现在用的m0就没有swo脚,不知道能不能用这个功能。

不一定要swo的哦~,JTAG也是可以的

个人签名

欢迎关注“麦克泰技术”

 
 
 

回复

227

帖子

0

TA的资源

一粒金砂(高级)

6
 
Jacktang 发表于 2021-3-31 22:27 既然是默认实现每个方向使用一个通道,用于可打印终端输入和输出 为什么还要虚拟终端呢,再打印到多个窗 ...

这样便于用来信息观察的

个人签名

欢迎关注“麦克泰技术”

 
 
 

回复

6802

帖子

0

TA的资源

五彩晶圆(高级)

7
 
MamoYU 发表于 2021-4-27 10:05 这样便于用来信息观察的

原来这样,还以为有其他用途

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表