问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

嵌入式芯片调试神器-J-Link RTT详解

发布网友 发布时间:2024-10-09 07:20

我来回答

1个回答

热心网友 时间:2024-10-09 17:13

更多嵌入式、无线通信硬核技术分享,职业发展、实战项目、咨询联系,欢迎关注 vx gzh “技塑未来”

Real Time Transfer(简称RTT)是Segger公司推出的用于嵌入式系统监控和交互的工具,其融合了SWO(SWD调试技术中的调试日志输出)等能力,且具备极高的性能。RTT的技术特点如下:

RTT能够在不影响嵌入式应用的实时行为下,能够高速双向通信,既可以输出调试信息,也能够从外部输入相关的控制命令。RTT可以在两个传输方向(输出和输入)上支持多个通道,不同的通道可用于不同的目的。

常见的实现是每个传输方向使用一个通道,用于调试的输入输出:

通过在PC上使用J-Link RTT Viewer工具,在工具中可以有多个虚拟终端,可以用来打印不同的信息(如一个窗口做标准输出,一个窗口做错误信息的输出,一个窗口做调试信息输出)。

在目标应用程序中使用RTT非常容易。实现代码可以免费下载,并且可以集成到任何现有的应用程序中。

通过RTT通信,可以使用任何J-Link。通过终端(通道0)进行通信的简单方法是,当到J-Link的连接(例如,通过调试会话)处于活动状态时,使用Telnet客户机或类似的设备创建到localhost:19021的连接。

RTT工具包含在J-Link软件包中,可根据系统需要下载对应安装包(地址: segger.com/downloads/jl...),Windows和MAC的都是图形化界面安装,都很简单,这里对Linux系统下的安装细节进行补充说明,以树莓派系统为例:

J-Link RTT Viewer

J-Link RTT Viewer是主要的Windows的GUI应用,用来使用RTT调试的所有功能。RTT Viewer可以单独使用,开启一个连接到J-Link,或者在运行调试会话时并行使用,RTT Viewer支持所有RTT的主要功能:

关于J-Link RTT Viewer的详细说明可参考J-Link用户指南文档( wiki.segger.com/UM08001...)。

关于J-Link RTT Viewer的多个虚拟终端,还是相对描述的模糊的,这里以相应实例来说明。

J-Link RTT Client

J-Link RTT Client作为一个Telnet Client,当调试会话关闭时其会自动尝试重连到J-Link连接,J-Link RTT Client是J-Link软件包的一部分。

J-Link RTT Logger

有了J-Link RTT Logger,来自Up-Channel 1的数据可被读取,并且可记录到log文件,这个Channel可以用于发送性能分析数据到主机端,J-Link RTT Logger打开了一个到J-Link的专用连接,可以在无调试会话时单独使用。该应用也是J-Link软件包的一部分。J-Link RTT Logger支持的命令列表如下:

如下为一个在树莓派上,用J-Link RTT Logger来抓取nordic开发板日志的示例:

RTT工作原理

RTT的实现使用了Control Block的架构,在目标嵌入式系统上通过内存来管理数据的读写。

注:Up Buffer Descriptors: Target -> Host

Down Buffer Descriptors: Host -> Target

上图灰色部分表示有数据存在

Control Block包含了ID,便于J-Link在内存内进行查找,每个可用通道(上面提到的虚拟终端)采用Ring Buffer架构,描述通道的缓存和状态。可用通道的最大个数可被配置,每个Buffer也可以被配置,上行和下行的Buffer是单独分开处理的。每个通道可以配置为阻塞模式或非阻塞模式。

在阻塞模式下,当Buffer满了后应用会等待,这会造成应用阻塞,但是保证了数据不丢失。

在非阻塞模式下,只写入符合缓冲区大小的数据,或者根本不写入数据,其余的将被丢弃,这种方式适用于应用的实时运行。

当RTT被激活,如通过RTT Viewer连接到使用J-Link的应用程序,J-Link会自动在嵌入式目标系统的已知内存区域搜索SEGGER RTT Control Block。RAM区域或Control Block的特定地址也可以通过主机应用程序来设置,以加快检测速度。

RTT的性能

如下是RTT, SWO, Semihosting三者速率的一个比较,该数据基于STM32F407上实测:

如下是RTT配合不同的J-Link型号(JTAG速率有差异),以及嵌入式系统上分配给RTT的Control Block缓存大小的一个速率对比:

RTT上行通道的缓冲区可以相对较小,所需的最小缓冲区大小可以用一毫秒内写入的数据量和一次写入操作中写入的最大数据量来近似表示。如果数据发送的频率较低,那么缓冲区应该有足够的空间来容纳一次写入发送的数据。如果更频繁地发送数据,缓冲区大小应该足以满足1毫秒内写入的最大数据量。下图显示了发送不同数量的数据时所需的最小缓冲区大小,平均分布,每100 us和每1 ms:

RTT实现代码大约需要500字节的ROM空间,RAM的占用则和Control Block的Buffer个数相关,24字节的ID + 24字节的单个通道控制块。每个通道都需要一些缓冲区的内存。根据输入/输出负载的不同,上行通道推荐的大小为1 kByte,下行通道推荐的大小为16到32字节。

RTT代码实现

SEGGER RTT代码用ANSI C编写,能方便集成到任何嵌入式应用程序中。RTT可以通过简单易用的API来使用。甚至可以重写标准的printf()函数来使用RTT。使用RTT将printf()所花费的时间减少到最低限度,并允许在应用程序执行时间关键的实时任务时向主机PC打印调试信息。

SEGGER RTT实现包括printf()的一个简单实现,可用于通过RTT编写格式化字符串。SEGGER_RTT_Printf()比大多数标准库printf实现要小,并且不需要堆,只需要可配置的堆栈数量。通过使用Lock()和Unlock(),使读取和写入线程安全,缓冲区的数量以及终端缓冲区的大小都可以设置。如下是RTT提供给嵌入式集成的接口函数:

更多精彩文章,也欢迎关注“技塑未来”公号,持续收取。

参考资料

segger.com/products/deb...

wiki.segger.com/UM08001...

wiki.segger.com/RTT
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
华为freebuds4i切歌怎么操作_华为freebuds4i怎么切歌 华为freebuds pro切歌方法_华为freebuds pro怎么切歌 华为耳机怎么切换下一曲 欧美电影,好像是宠物有一个世界,宠物会想办法跟主人的灵魂互换占据 ...的名字,欧洲中世纪,一个王子的继母把他的灵魂和狗的灵魂互换了... 问一部外国电影的名字 剧情记得不大清楚l了 是前几年的片子 灵魂互换的... HUAWEI 华为 AGS2-W09 10.1英寸平板电脑 (香槟金、64GB+4GB、WiFi版... 诛仙3百法和千法差距大吗 微信怎么解除应用授权登录 授权应用删除方法 微信怎么解除应用授权登录授权应用删除方法 【芯片调试】OpenOCD是什么? 芯片ddr调试问题 什么是RRS新闻连接?? 吸收甲醛越多,吊兰长的越好? 康熙有几个儿子谢谢了,大神帮忙啊 我家迅雷下载速度有10M分析一下是什么原因?谢谢了,大神帮忙啊 四大名著讨厌的人物50字 四大名著而论,刘备,贾宝玉,宋江,唐僧,你最讨厌谁 我的手机是三星i9268连接电脑的时候虽然可以用,可是显示的是一个手机... 为什么我的手机GT-I9268 连接不了电脑?? 韩式辣炒刀鱼韩式辣炒刀鱼做法 我的三星i9268手机usb怎么连接不上电脑? 韩式辣烤秋刀鱼做法 温州职业技术学院的会计专业怎么样,虽然不是主打专业,但教学质量应该过... 温州有哪些会计学校 温州职业技术学院财会系开设专业 跳集体舞是怎么样让男女生的手尽量不碰到一起? ...高中生要学习跳舞,而且要和女生一起跳,不知道这是不是真的,我感觉... 兰彻斯特方程简介 途乐定速巡航按键在哪? 怎么读取芯片程序? 请问:车子挂5挡行驶,踩离合再迅速松开(不做其他操作) 车子就会有顿挫感... 有事不能参加同学聚会怎么委婉的说? 各种巧克力的含义求解答啊! ...求个下载程序,主要是用来兼容这个扫描仪,电脑系统WIN7。_百度... 榴莲怎么长期保存不会坏 榴莲如何保存长久 几月几号入署 一般入署天多长时间? 起亚k5热车不好启动的原因 初一文言文(关于学习) 口腔医学和口腔医学技术专业有什么区别 口腔医学和口腔医学技术有什么不同 区别有哪些 天津一汽威志v2是国四排放标准吗 天津一汽夏利威志V2轮胎秋季保养知识 2023年内蒙古沙尘暴主要在哪些时间段爆发? 测量发光二极管正向伏安特性时,电流表应该采用外接法还是内接法?为什么... ...现在正在犹豫是考mpacc呢?还是考cpa?谁能帮我分析分析? 「名柯」探究主角群的初登场——警方(四) 传真机传得出去,传不进来。求解 一台用热敏纸的传真机,复印或传真时在纸的中间很黑看不清楚,用手持方式...