新闻动态   News
你的位置:大功率电感 > 技术

如何在IAR中使用J-Link RTT打印数据?

时间:2023-10-25 06:07:02  来源:  作者: 点击统计:

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

什么是RTT?
 
RTT(RealTimeTransfer)是一种用于嵌入式中与用户进行交互的技术,它结合了SWO和半主机的优点,具有极高的性能。

使用RTT可以从MCU非常快速输出调试信息和数据,且不影响MCU实时性。

这个功能可以用于很多支持J-Link的设备和MCU,兼容性强。

RTT支持两个方向的多个通道,上到主机,下到目标,它可以用于不同的目的,为用户提供尽可能多的使用方式。

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

使用J-LinkRTTViewer,可用于“虚拟”终端,允许打印到多个窗口(例如:一个用于标准输出,一个对于错误输出,一个用于调试输出)。

图1:J-LinkRTT
 
RTT的工作原理
 
RTT在MCU的存储器中使用SEGGERRTT控制块结构管理数据读写。

该控制块包含一个ID,以使其可以通过连接的J-Link在内存中找到controlblock,并且为每个可用通道提供一个环形缓冲区结构,描述通道缓冲区及其状态。

可用信道的最大数目可以在编译时配置,并且每个缓冲区都可以在MCU运行时配置和使用。

上下缓冲区可以分开处理。

每个通道都可以配置为阻塞或非阻塞。

在阻塞模式下,应用程序将等待缓冲区写满,直到可以写入所有内存为止,这将导致应用程序处于阻塞状态,但可以防止数据丢失。

在非阻塞模式下,只会写入适合缓冲区的数据,或完全不写入缓冲区,其余的数据将被丢弃。

这样即使没有连接调试器,也可以实时运行。

开发人员不必创建特殊的调试版本,并且代码可以保留在发布应用程序中。

图2:RTT工作原理图
 
RTT的性能
SEGGERRTT的性能明显高于其他任何用于将数据输出到主机PC的方式。

平均一行文本可以在1微秒或更短的时间内输出。

基本上相当于做一个memcopy()的时间。

图3:RTT,SWO,Semihosting的性能对比图
 
如何使用RTT
 
相关工具:1、IAREWARM8.50.92、J-LinkV6.92驱动包3、STM32F411RE(1)首先下载Segger的J-Link的驱动包https://www.segger.com/downloads/jlink/JLink_Windows.exe,下载之后完成安装。

(2)完成安装之后,根据你安装时的路径,找到J-Link驱动包的安装位置,找到如下路径SEGGERJLink_V692SamplesRTT,解压路径里的SEGGER_RTT_V692.zip,不同版本的驱动包V后面的数字不同。

图4:RTT代码
(3)将解压后的文件夹拷贝到所在工程目录(4)在IAREWARM项目工程中,创建RTTGroup,将SEGGER_RTT_V692RTT目录下的SEGGER_RTT.c和SEGGER_RTT_printf.c添加到RTT中,添加include路径SEGGER_RTT_V692RTT。

图5:添加文件
图6:添加include路径 (5)工程加入文件后,在想使用RTT的文件添加#include“SEGGER_RTT.h”,就可以调用SEGGER_RTT_printf()。

SEGGER_RTT_printf(0,”helloworld!”);的语法格式与C语言中printf类似,只不过在前面加了个参数0,表示0通道。

(6)在开始菜单→SEGGERJ-LinkV6.92→J-LinkRTTViewer,打开之后,选择USB连接J-Link,选择你的芯片型号,这里选择STM32F411RE,接口、接口速度和RTT控制块默认即可。

图7:连接J-LinkRTTViewer 确保RTTViewer连接上,连接成功后,在下面的log框中,会有如下显示。

图8:J-LinkRTTViewer连接成功 (7)在工程中main函数的while循环中加 SEGGER_RTT_printf(0,"hello,rttn");构建工程,DownloadandDebug调试,全速执行,输出如图所示,成功使用J-LinkRTT打印数据。

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

此帖出自综合技术交流论坛|||既然是默认实现每个方向使用一个通道,用于可打印终端输入和输出为什么还要虚拟终端呢,再打印到多个窗口|||

Jacktang2021-3-3122:27既然是默认实现每个方向使用一个通道,用于可打印终端输入和输出为什么还要虚拟终端呢,再打印到多个窗...
节省硬件资源,打印出去的可以归类处理。

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

|||

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

不一定要swo的哦~,JTAG也是可以的|||
Jacktang2021-3-3122:27既然是默认实现每个方向使用一个通道,用于可打印终端输入和输出为什么还要虚拟终端呢,再打印到多个窗...
这样便于用来信息观察的|||
MamoYU2021-4-2710:05这样便于用来信息观察的
原来这样,还以为有其他用途

  • 这些巴特沃斯滤波器设计细节你知道吗?
    在使用滤波器对信号频谱进行整形的应用中(例如在通信或控制系统中),对于简单的一阶滤波器,滚降的形状或宽度(也称为“过渡带”)可能会太长或因此需要设计有多个“阶”的宽且有源滤波器。 这些类型的滤波器通常被称为“高阶”或“n个阶”过滤器。 复杂性或滤波器类型由滤波器的“顺序”定义,并且取决于其设计中的电抗组件(例如电容器...
  • 简单的输入接口电路设计细节分析
    接口是将一个设备(尤其是计算机或微控制器)与另一个设备连接或链接在一起的方法,这使我们能够设计或调整两个电子设备的输出和输入配置,以便它们可以一起工作。 但是接口不仅仅是使用计算机和处理器的软件程序来控制某些东西。 尽管计算机接口使用单向和双向输入和输出端口来驱动各种外围设备,但是许多简单的电子电路都可以使用机...
  • 功率放大器在电流互感器高压侧电源研发测试中的应用
    功率放大器在电流互感器高压侧电源研发测试中的应用[复制链接]实验名称:电流互感器高压侧电源研发研究方向:使用市电作为低压侧交流源,在100kV高压侧产生多个非共地直流电源实验内容:使用ATG3080作为高频交流源,为互感器提供一次侧高频电流,并使二次侧产生需要的直流电压测试目的:解决一个低压侧交流源可以在100kV高压侧需要产生...