J-Link RTT调试的初始介绍

RTT是Segger公司提供的实时传输技术,适用于嵌入式系统调试,能在不影响MCU实时性的情况下输出调试信息。通过J-LinkRTTViewer,用户可以实现多通道交互,且无需特殊配置。RTT利用MCU内存中的控制块管理数据传输,支持阻塞和非阻塞模式。其性能优越,输出速度快,且不依赖额外硬件如SWO引脚。安装J-Link驱动后,即可开始使用RTT功能。
摘要由CSDN通过智能技术生成

1 RTT简介

  RTT全称是Real Time Transmit(实时传输)是Segger公司推出的调试手段之一。它是一种用于嵌入式中与用户进行交互的技术。使用RTT可以从MCU快速输出调试信息和数据,且不影响MCU的实时性。只要支持J-Link的MCU就可使用RTT功能,兼容性非常强。RTT支持两个方向的多个通道,上到主机,下到目标,它可以用于不同的目的,为用户提供尽可能多的自由。默认实现每个方向使用一个通道,用户可在在调试终端输入和输出。使用J-Link RTT Viewer,可用于“虚拟”终端,允许打印到多个窗口(例如,一个用于标准输出,一个对于错误输出,一个用于调试输出)。RTT的通信可以通过不同的应用程序完成,可以使用SDK集成到自定义的应用程序中,可本地连接,可远程连接。

2 RTT的工作原理

  RTT在MCU的存储器中使用Segger RTT控制块结构管理数据的读写操作。控制块对于每个可用的信道都在内存中包含了一个ID,用于描述通道缓冲区及其状态,通过J-Link或者环形缓冲结构区(链表)都可以通过ID找到对应的控制块。

  可用信道的最大数目可以在编译时配置,并且每个缓冲区都可以在MCU运行时配置和使用。上下缓冲区可以分开处理。每个通道都可以配置为阻塞或非阻塞。在阻塞模式下,应用程序将等待缓冲区写满,直到可以写入所有内存为止,这将导致应用程序处于阻塞状态,但可以防止数据丢失。在非阻塞模式下,只会写入适合缓冲区的数据,或完全不写入缓冲区,其余的数据将被丢弃。这样即使没有连接调试器,也可以实时运行。开发人员不必创建特殊的调试版本,并且代码可以保留在发布应用程序中。

  当 RTT处于活动状态时,无论是通过 RTT Viewer 等应用程序直接使用 RTT,还是通过 Telnet 连接到使用 J-Link 的应用程序(如调试器),J-Link 都会在目标的已知 RAM区域中自动搜索 Segger RTT 控制块。RAM区域或控制块的特定地址也可以通过主机应用程序设置以加快检测速度,否则无法自动找到控制块。
下图显示了Segger RTT 控制块的内部结构:

在这里插入图片描述
RTT不需要通过额外SWO引脚,即可实现printf输出,它也不需要对目标进行任何配置或在调试环境中进行任何配置,甚至可以在不同的目标速度下使用。

3 RTT的性能

  RTT的性能(耗时)远低于SWO。平均一行文本可以在一微秒或更短的时间内输出,基本上只需要做一个memcopy() 的时间。
在这里插入图片描述
  RTT的最大速度取决于目标缓冲区大小和目标接口速度。 即使使用 512 字节的小型目标缓冲区,高版本的J-Link的速度高达 1 MiB/s,而使用低版本的J-Link只有0.5 MiB/s。
在这里插入图片描述

4 J-Link驱动安装

在使用RTT之前,先要J-Link驱动。J-Link驱动下载链接:https://www.segger.com/downloads/jlink/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值