Python实现RTT客户端,源码+详细讲解,绝对原创!申请置酷!

2019-12-12 18:13发布

不知道RTT是什么、怎么用的请看下面这两个帖子:
JLINK RTT,完爆各种printf形式,从此swo是路人
开贴研究:JLINK RTT,完爆各种printf形式,从此swo是路人

RTT确实是调试神器,可RTT的电脑客户端太不给力,只能显示文字不说,连复制、清除这些基本功能都没有,所以就想自己做一个RTT客户端出来

经过几天的刻苦 摸索加上神器Python的加持,终于制作出了初版可用的RTT客户端,之前得到很多莫友的各种帮助,所以赶快贡献出来,希望对各位莫友有用。。

首先上效果图:
文本显示:
QQ截图20160319160914.png (6.26 KB, 下载次数: 0) 下载附件 2016-3-19 16:08 上传
unpack函数的第一个参数是解析字符串,,其中16s表示16个字符的字符串,L表示4字节的int,24x表示跳过24字节不管,,struct的更详细的用法可去网站上去搜索看一下
通过对照SEGGER_RTT_CB结构体的定义可以知道上面15个数值的具体含义

至此,我们已经完成了通过JLINK读取内存,并解析出_SEGGER_RTT结构体变量各个域的值,,然后我们通过解析出SEGGER_RTT_RING_BUFFER中pBuffer指向的内存,就能读取出用户要显示的数据

当然,读取完数据后还需要通过JLINKARM_WriteMem函数来修改内存中的读偏移RdOff,,这些更加完整、详细的操作可以通过读下面的程序源码来理解:

完整程序源码: RTTView.rar (7.1 KB, 下载次数: 499) 2016-3-19 16:16 上传 点击文件名下载附件
执行此程序需要安装Python 2.7、PyQt和PyQwt

欢迎大家尝试使用,希望莫大能给置酷
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
100条回答
XIVN1987
1楼-- · 2019-12-14 11:38
lanfeng0107 发表于 2016-3-19 17:18
明白了.....还有一点:SEGGER_RTT_RING_BUFFER 在哪里?么找到...


老版本里面叫RING_BUFFER,新版本改叫SEGGER_RTT_RING_BUFFER了,,

QQ截图20160319175110.png (69.4 KB, 下载次数: 0)

下载附件

2016-3-19 17:50 上传

XIVN1987
2楼-- · 2019-12-14 14:44
huangqi412 发表于 2016-3-19 17:06
RTT 客户端需要输入芯片型号比较烦人,是因为它的实现方式是通过芯片型号对应描述文件,描述文件给出RAM地 ...


对,应该是你说的这样,,感觉用.map文件比搜索更简单、快捷点儿,,因为它那个方式有时候找不到,还得自己指定精确位置,,而且每次编译之后_SEGGER_RTT的位置都可能会改变,,很麻烦。。

至于你说的MDK调试时和这个程序怎么协调,,我刚刚试了下,不会冲突,,两个程序可以一起工作,,此时电脑右下角会出现两个Jlink Control Panel图标。。
XIVN1987
3楼-- · 2019-12-14 15:15
dxslp 发表于 2016-3-19 17:11
发送速度是多快 最多发送多少个变量


我实测过,用JLINK v9、JTAG接口、STM32F103,最高可以到567KB/s,速度是UART 115200波特率时候的50倍

以后出来更高级的JLINK后应该可以更快

当然,用只有SWD接口的JLINK-OB的话,速度可能会慢不少,,不过那也肯定比串口快

而且RTT只需要单片机把数据放到SRAM的指定位置就可以了,,不用像串口那样一直等着发送完成、或开个缓冲区让串口中断来发,,简单很多
huangqi412
4楼-- · 2019-12-14 16:22
XIVN1987 发表于 2016-3-19 18:08
我实测过,用JLINK v9、JTAG接口、STM32F103,最高可以到567KB/s,速度是UART 115200波特率时候的50倍

...

串口作为最通用最基本的调试手段,还是无法替代的。   8位机就没这个RTT只能串口了。   现在单片机串口一般也可以到几个M位速的。  
winfisher
5楼-- · 2019-12-14 16:54
 精彩回答 2  元偷偷看……
dxslp
6楼-- · 2019-12-14 22:11
XIVN1987 发表于 2016-3-19 18:08
我实测过,用JLINK v9、JTAG接口、STM32F103,最高可以到567KB/s,速度是UART 115200波特率时候的50倍

...

v8呢  我需要100us拿到一个16位数据 不知道v8能胜任不

一周热门 更多>