搜索
bottom↓
12
返回列表 发新帖
楼主: myxiaonia

JLINK RTT,完爆各种printf形式,从此swo是路人

  [复制链接]

出0入0汤圆

发表于 2014-9-11 08:25:26 | 显示全部楼层
这个可以有,这个必须有。虽然很久没搞嵌入式了。

出0入0汤圆

发表于 2014-9-11 08:31:25 | 显示全部楼层
windrarara 发表于 2014-9-10 09:13
是硬件版本v9的jlink吗?v8的用不了吧?

很早就有V8版本的山寨货卖了吧

出0入0汤圆

发表于 2014-9-11 08:38:39 | 显示全部楼层
回去试试,一直用串口在发些关键数据。

出0入0汤圆

发表于 2014-9-11 09:24:12 | 显示全部楼层
感谢分享,一直用SWO,感觉也挺方便的,就是没有这个引脚的芯片没法用,这个方法很强大,有空试试

出0入0汤圆

发表于 2014-9-11 09:45:08 | 显示全部楼层
测试了一下,J-Link RTT Client 和 J-Link RTT Logger都可以用,不过都有丢数据,我是每0.5ms发送十几个字节数据。大概每隔50ms左右丢失数据。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2014-9-11 09:50:39 | 显示全部楼层
本帖最后由 myxiaonia 于 2014-9-11 09:51 编辑

dr2001大神,一年多以前就预见到rtt这种类型的主机交互方案,这得对arm有多深入的研究才能做到。。。
大家请看这个回帖       Cortex系列因为可以不Hold CPU访问内存,可以直接读写内存完成双向信息传输

我一直很好奇dr2001大神到底是什么来历,之前就有此疑问,如今更是高山仰止。。。敢请大神透露一二,拜为门下走狗又何妨

出0入0汤圆

 楼主| 发表于 2014-9-11 09:54:21 | 显示全部楼层
canger 发表于 2014-9-11 09:45
测试了一下,J-Link RTT Client 和 J-Link RTT Logger都可以用,不过都有丢数据,我是每0.5ms发送十几个字 ...

缓冲区可以开大点,在SEGGER_RTT_Conf.h中,看看有没有改善的效果
按理说默认1k已经不少了,而且你发送频率也不算太高么

出0入0汤圆

发表于 2014-9-11 10:38:23 | 显示全部楼层
哇,不错,替代串口输出。。。

出0入0汤圆

发表于 2014-9-11 10:39:19 | 显示全部楼层
myxiaonia 发表于 2014-9-11 09:54
缓冲区可以开大点,在SEGGER_RTT_Conf.h中,看看有没有改善的效果
按理说默认1k已经不少了,而且你发送频 ...

加大了缓存区后可以了,视觉上是由于Clint或Logger读取速度太慢(50模式)引起的,希望SEGGER下一版软件能改进此问题,毕竟ARM中的RAM是有限的。

出0入213汤圆

发表于 2014-9-11 11:07:46 | 显示全部楼层
果然是神器,速度标记一下。

出0入0汤圆

发表于 2014-9-11 11:10:55 | 显示全部楼层
在SRAM调试解决方法

http://www.amobbs.com/forum.php? ... p;page=1#pid7873454

出0入0汤圆

发表于 2014-9-11 11:27:10 | 显示全部楼层

在SRAM调试解决方法

http://www.amobbs.com/forum.php?mod=viewthread&tid=5595476&page=1#pid7873668

出0入0汤圆

发表于 2014-9-11 13:36:55 | 显示全部楼层
长知识了

出0入0汤圆

发表于 2014-9-11 22:06:30 | 显示全部楼层
好东西, 再也不用多一个串口愁了

出0入0汤圆

发表于 2014-9-11 22:38:53 | 显示全部楼层
看到RTT,确实觉得很熟悉

话说,这个主要是调试信息、日志输出?那么输入呢?
输出关系不大,jlink去读取内存就可以了,而且还得保证jlink读取速度大于日志的产生速度

出0入0汤圆

发表于 2014-9-11 22:40:14 | 显示全部楼层
好像还真得支持输入呢,那可以把RT-Thread的shell架上去了,串口线可以省掉

出0入0汤圆

发表于 2014-9-11 22:43:56 | 显示全部楼层
ffxz 发表于 2014-9-11 22:40
好像还真得支持输入呢,那可以把RT-Thread的shell架上去了,串口线可以省掉

嗯,那是一个非常大的改进

释放了很重要的一个资源


RTT系统全新特性,采用了RTT替代串口作为Shell接口……


把读者绕晕了

出0入0汤圆

 楼主| 发表于 2014-9-11 22:46:17 | 显示全部楼层
ffxz 发表于 2014-9-11 22:38
看到RTT,确实觉得很熟悉

话说,这个主要是调试信息、日志输出?那么输入呢?

呵呵,一样的缩写。。。可以省掉一个串口吧,有几个网友已经验证功能了

出0入0汤圆

发表于 2014-9-11 23:00:40 | 显示全部楼层
newbee a, 试试看

出0入0汤圆

发表于 2014-9-13 20:42:41 | 显示全部楼层
伟大的发现,无私的分享

出50入8汤圆

发表于 2014-9-13 21:14:23 | 显示全部楼层
看起来是个好东西

出0入0汤圆

发表于 2014-9-13 21:19:03 | 显示全部楼层
收藏先,以后看。谢谢了。

出100入0汤圆

发表于 2014-9-13 21:31:22 来自手机 | 显示全部楼层
mark学习 有空调试看看

出0入0汤圆

发表于 2014-9-13 22:03:34 | 显示全部楼层
ffxz 发表于 2014-9-11 22:40
好像还真得支持输入呢,那可以把RT-Thread的shell架上去了,串口线可以省掉


是支持输入的,作为隐藏式shell,调试的时候很方便,又不怕不清楚的人看到数据

出0入0汤圆

发表于 2014-9-13 22:14:03 | 显示全部楼层

我是来赚分的

出0入0汤圆

发表于 2014-9-14 10:12:33 | 显示全部楼层
收藏 拜读 研究

出0入0汤圆

发表于 2014-9-15 11:09:21 | 显示全部楼层
谁有改的STM32F103的RTT例程上传一下吧.谢谢.

出0入0汤圆

发表于 2014-9-15 11:15:47 | 显示全部楼层
谁有改的STM32F103的RTT例程 上传一下吧.谢谢.

出0入0汤圆

发表于 2014-9-15 11:30:40 | 显示全部楼层
有改的STM32F103的 Jlink RTT例程 上传一下吧.谢谢.

出10入95汤圆

发表于 2014-9-16 21:22:50 | 显示全部楼层
多谢分享!!

出0入0汤圆

发表于 2014-9-16 22:12:06 | 显示全部楼层
学习一下!!

出0入0汤圆

发表于 2014-9-23 13:04:47 | 显示全部楼层
支持一下

出0入0汤圆

发表于 2014-9-23 13:25:32 来自手机 | 显示全部楼层
好东西,帮顶

出0入0汤圆

发表于 2014-9-28 16:47:20 | 显示全部楼层
如果没有SWO的 cortex  M3, jlink 能dowm 程序到falsh 吗?

出0入0汤圆

发表于 2014-9-28 19:05:14 | 显示全部楼层
不错,有空学习下。

出0入0汤圆

 楼主| 发表于 2014-9-28 20:53:19 | 显示全部楼层
tyqman 发表于 2014-9-28 16:47
如果没有SWO的 cortex  M3, jlink 能dowm 程序到falsh 吗?

swo一般用于调试时作为和外部交互的接口,下载程序不用这个,swd号称2线制,否则就要3线了

出0入0汤圆

发表于 2014-9-28 20:56:31 | 显示全部楼层
myxiaonia 发表于 2014-9-28 20:53
swo一般用于调试时作为和外部交互的接口,下载程序不用这个,swd号称2线制,否则就要3线了 ...

意思是,只要MCU 有SWD 和时钟,用4.9e 的jlink 是可以down 程序到target ?

出0入0汤圆

发表于 2014-10-1 15:08:09 | 显示全部楼层

出0入42汤圆

发表于 2014-10-1 20:45:57 | 显示全部楼层
厉害,我采用重定向printf感觉很方便,没想到又有这个了,以后要试试。

出0入17汤圆

发表于 2014-10-2 08:31:37 来自手机 | 显示全部楼层
有没有速度的指标呢?

出0入0汤圆

发表于 2014-10-3 19:02:32 | 显示全部楼层
一大利器呀,是JLINK都能用吗?

出0入0汤圆

发表于 2014-10-4 07:35:43 | 显示全部楼层
好资料,mark下

出0入0汤圆

发表于 2014-11-4 10:09:21 | 显示全部楼层
差了100倍,看到这个指标要疯了。准备弄个ULTRA来试试最大采样率。

出0入0汤圆

发表于 2014-11-26 09:37:01 | 显示全部楼层
谢谢分享,辛苦了

出0入0汤圆

发表于 2014-12-9 14:40:30 | 显示全部楼层
有人试过JLINK-SDK吗?

出0入0汤圆

发表于 2015-1-30 14:01:32 | 显示全部楼层
湛无双 发表于 2014-9-10 09:58
这个感觉调试挺方便的 关于什么样的Jlink可以用 里面已经给了注释了
SEGGER RTT can be used with any J-Li ...

的确是省了UART硬件的开销。

出0入0汤圆

发表于 2015-1-30 14:22:12 | 显示全部楼层
测试了一下V7的都可用,只要驱动装的驱动支持RTT的版本即可

出0入0汤圆

发表于 2015-1-31 17:35:00 | 显示全部楼层
前段时间我还在想,MDK调试能不能用printf函数打印出信息在MDK输出窗口显示,原来真有这个东西---swo  现在还有RTT了,看来以后还是要多看看技术区帖子,不然太孤陋寡闻了~  

出0入0汤圆

发表于 2015-1-31 22:49:16 | 显示全部楼层
学习了!mark

出0入0汤圆

发表于 2015-1-31 22:50:03 | 显示全部楼层
学习 了!mark

出0入0汤圆

发表于 2015-2-1 11:28:43 | 显示全部楼层
请问RTT调试仿真器和芯片连线怎么连?是所有的ARM芯片都支持RTT还是只有某些芯片支持?

出0入0汤圆

 楼主| 发表于 2015-2-1 14:41:23 | 显示全部楼层
yzuwdf 发表于 2015-2-1 11:28
请问RTT调试仿真器和芯片连线怎么连?是所有的ARM芯片都支持RTT还是只有某些芯片支持? ...

是cortex-m系列都可以,segger官网有介绍rtt

出0入0汤圆

发表于 2015-2-1 16:12:41 | 显示全部楼层
各种芯片,SWD时钟能到多少?这个有木有指标?

出0入0汤圆

发表于 2015-2-1 16:13:59 | 显示全部楼层
如果MDK里最高就设置到4M, 8位命令+3位应答+33位数据,别的什么都不算,就已经超过40个时钟,  

出0入0汤圆

发表于 2015-3-11 18:59:53 | 显示全部楼层
添砖加瓦,segger在4.96版本的软件里面新加了一个RTT Viewer,看名字就知道啥意思了,亲测全图形化操作,从此告别各种命令行~

这里直接上传这个执行文件,目测不需要其他依赖,如果有的去官网自行下载完整安装包即可。。。。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2015-4-27 12:11:15 | 显示全部楼层
每次下载程序后, RTT Viewer需要重启, 有点麻烦

出0入0汤圆

发表于 2015-4-27 12:35:57 | 显示全部楼层
做个记号,支持一下

出0入0汤圆

发表于 2015-4-27 12:38:11 | 显示全部楼层
MARK 调试利器RTT

出0入0汤圆

发表于 2015-5-16 10:09:33 | 显示全部楼层
gwnpeter 发表于 2014-9-10 22:48
说到做到........................已经成功使用了。
有些小问题,待会发个帖子,大家研究看看怎么优化一下
...

买楼主一个 回来玩玩
已经三年多没有用stm32  一直dspic 28027

出0入0汤圆

发表于 2015-5-23 11:53:30 | 显示全部楼层
收藏了,谢谢分享。

出0入0汤圆

发表于 2015-10-22 11:58:16 | 显示全部楼层
好东西啊,标记学习!

出0入0汤圆

发表于 2015-10-24 10:50:27 | 显示全部楼层
期待教程...........

出0入0汤圆

发表于 2015-10-24 15:02:38 | 显示全部楼层
今天,花了点时间试试了RTT功能。我用JLINK ARM-OB板子已经在IAR环境下顺利跑起了RTT。从目前来看,RTT足以取代传统的串口调试方法。不足之处,就是无论是JLinkRTTClient还是JLinkRTTViewer,界面都比较粗超,比起我最欢喜的SecureCRT,功能太单一。

我刚才又试了一下,在IAR调试的时候,不用打开JLinkRTTClient,在SecureCRT里面用telnet方式直接连接,可以直接看到调试的信息。好处是:a) 调试信息可以随时清空。 b)想保存调试信息的话,用SecureCRT的日志功能即可。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2015-11-30 21:14:46 | 显示全部楼层
这个怎么进行输入呢?

出50入0汤圆

发表于 2015-12-8 13:08:37 | 显示全部楼层
为啥我全速运行看不到 RTT 输出呢,停下仿真就看到了全部的输出
Jlink V8  V4.90e
MDK 4.22 STM32F103VC
跑了操作系统,把RTT当一个task


    uint32_t u32i = 0;
    while (1)
    {
        SEGGER_RTT_printf(0,"u32i = %x\r\n",u32i);
        u32i++;
        raw_sleep(100);
    }

出0入0汤圆

发表于 2015-12-24 10:37:58 | 显示全部楼层
MARK一下,过几天试试

出0入0汤圆

发表于 2015-12-26 14:35:20 | 显示全部楼层
上传一个 RTT 文件包。从 JLink_V510f 安装目录下提取出来的。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2015-12-28 10:23:50 | 显示全部楼层
Mark,Thanks.

出0入0汤圆

发表于 2016-3-20 00:41:20 | 显示全部楼层
这个一定要好好学习,给楼主点赞

出0入0汤圆

发表于 2016-6-23 11:26:06 | 显示全部楼层
好东西,有机会去试试看

出0入0汤圆

发表于 2016-6-24 22:35:15 | 显示全部楼层
看看结果

出0入0汤圆

发表于 2016-6-26 08:36:37 | 显示全部楼层
本帖最后由 helislayer 于 2016-6-26 08:44 编辑

歪一下楼啊,这个 stlink 也支持。
在 Linux 叫做 semihosting
arm-gcc 直接支持,就是链接的时候加上这个选项:

--specs=rdimon.specs -lc -lrdimon

然后启动 openocd 的时候加上
-c "arm semihosting enable“

就可以了。可以直接用 printf 和 scanf。
printf 我试过了,scanf 还没有试。

windows 的 stlink util 应该也支持,
应该就是先有 windows 的才有 linux 的。
但是我不用 windows 所以没有去试。

自己写一个应该也不难。

出0入0汤圆

发表于 2016-6-27 07:32:40 来自手机 | 显示全部楼层
好东西,值得研究

出0入0汤圆

发表于 2016-8-29 12:06:20 | 显示全部楼层
确实不错就是非调试状态下seggerRTT.exe容易崩溃

出0入0汤圆

发表于 2016-9-23 21:00:39 | 显示全部楼层
这个测量好像不对啊,或者说测量的不是传输时间,而是输出到buffer的时间,如果82个字节只用1us的时间,那波特率有82*8*10^6也就是656Mbit/s, 然后调试线是通过单一数据线传输,所以jlink的时钟线高达656MHz,显然这是不可能的,所以我推测这个82字节1us应该是82字节写到RAM buffer的时间,也就说真实的传输速度取决于Jlink的时钟频率,而一般情况Jlink也就是跑在5MHz,再高点就是10M,远没有图上656M的速度

出0入0汤圆

发表于 2016-9-23 22:07:41 | 显示全部楼层
本来我也想发这个贴介绍的,后来一查这个技术14年就有了,网上也挺多了就没有写。原来还是可以这么火,我的项目中已经用了,教了一批同事

出0入0汤圆

发表于 2016-9-24 08:20:47 | 显示全部楼层
感谢楼主分享经验。

出0入0汤圆

发表于 2016-9-24 11:19:05 | 显示全部楼层
已用,感觉很爽。只是每次都需要开segger的command 窗口做一次连接,有点小麻烦。要是能直接开cline窗口就更方便了。

出0入0汤圆

发表于 2016-9-24 15:15:37 | 显示全部楼层
恩 这个不错  有时间研究一下

出0入0汤圆

发表于 2016-9-24 17:02:26 | 显示全部楼层
有时候会塞死

出0入0汤圆

发表于 2016-9-27 18:12:17 | 显示全部楼层
有空好好学习.谢谢

出0入0汤圆

发表于 2016-9-27 20:22:22 | 显示全部楼层
好像很牛的样子

出0入0汤圆

发表于 2016-10-10 17:13:02 | 显示全部楼层
研究一下,谢谢

出0入8汤圆

发表于 2017-1-10 10:17:38 来自手机 | 显示全部楼层
好东西!!!!!

出0入9汤圆

发表于 2017-1-10 10:40:17 | 显示全部楼层
之前用4.98的 如果下载程序的时候不关闭RTT View的话就会下载失败
前段时间改成6.10 貌似没有这个问题了
而且现在还支持log  支持更改字符颜色  清屏命令
总之用起来很爽

出0入0汤圆

 楼主| 发表于 2017-1-25 23:00:43 | 显示全部楼层
我用mdk中采用printf重定向的方法,性能不怎么样,还不如swo,原因是因为arm自己的标准库不支持流形式输出,每次都只能处理1个字节,不如iar,人家直接给移植好了,还是流模式

不过怎么说只需要一个jlink,也不需要swo口就能调试了,功能是没有问题的

出0入0汤圆

发表于 2017-1-26 13:12:18 | 显示全部楼层
谢谢分享!

出95入100汤圆

发表于 2017-3-10 20:04:16 | 显示全部楼层
在有些场合还是不行,没办法隔离。还是串口好用,很容易实现隔离

出0入8汤圆

发表于 2017-8-21 10:19:55 | 显示全部楼层
myxiaonia 发表于 2017-1-25 23:00
我用mdk中采用printf重定向的方法,性能不怎么样,还不如swo,原因是因为arm自己的标准库不支持流形式输出 ...

性能还不如SWO  不会吧   

出0入0汤圆

 楼主| 发表于 2017-8-21 13:23:50 | 显示全部楼层
justdomyself 发表于 2017-8-21 10:19
性能还不如SWO  不会吧

确实不如,有两个问题:1-mdk库的printf不支持多字节一次性缓存输出方式,必须一个个输出,很慢  2-swd的速度和swo的速度差不了多少,而swd还要走调试数据

唯一的好处是,不需要swo线也可以用printf

出0入0汤圆

发表于 2017-8-22 23:37:57 | 显示全部楼层

不错哦,有时间试下

出0入0汤圆

发表于 2018-3-20 17:02:58 | 显示全部楼层
putty也可以操作jlink 调用RTT

出0入0汤圆

发表于 2020-11-1 17:06:50 | 显示全部楼层
https://www.cnblogs.com/zhj868/p/12661131.html

C语言中printf函数默认输出设备是显示器,如果要实现在 串口或者LCD上显示,必须重定义标准库函数里调用的与输出设备相关的函数。比如使用printf输出到串口,需要将fputc里面的输出指向串口, 这一过程就叫重定向。 那么如何让STM32使用printf函数呢?

int fputc(int ch,FILE *p) //函数默认的,在使用printf函数时自动调用

{

  USART_SendData(USART1,(u8)ch);

  while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);

  return ch;

}

出0入0汤圆

发表于 2020-11-7 21:26:22 来自手机 | 显示全部楼层
感谢分享,正准备试一下
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-12 12:13

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表