搜索
bottom↓
回复: 18

JLINK RTT功能输出怎么这么耗时?实测数据远超预期

[复制链接]

出5入4汤圆

发表于 2019-4-8 15:09:48 | 显示全部楼层 |阅读模式
之前用RTT也没特意关注耗时的问题,毕竟对us级别的时间不敏感,最近一个项目测了一下,哎呦,时间太长了吧
大家看看是我的测试方法有问题吗?

先上理论值,从某文档看到的,82字符1 us就输出了


来看实测值,程序是这样,其中H就是把引脚拉高,L就是拉低,这个过程几乎是瞬间完成的


示波器测出来的时间:


82字符,50  us !!!???

本帖子中包含更多资源

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

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入12汤圆

发表于 2019-4-8 15:15:45 | 显示全部楼层
H 和 L 直接加个 nop 测出来多少?

出0入12汤圆

发表于 2019-4-8 15:17:24 | 显示全部楼层
大致的操作是字符串格式化然后向内存写,所以耗的时间应该比较少。我不知道 1us 是怎么来的,因为脱离开 cpu 频率谈时间是没有意义的。

出0入0汤圆

发表于 2019-4-8 15:28:10 | 显示全部楼层
大概16Mbps了,很快了好吗

出0入0汤圆

发表于 2019-4-8 15:41:42 | 显示全部楼层
这个本来就是方便测试的,release肯定是要去掉的

出0入0汤圆

发表于 2019-4-8 15:55:02 | 显示全部楼层
RTT的机制是 程序将要输出的信息打到buffer中,然后上位机定时去查询读取。
所以 MCU打印到buffer的时间很快,但是上位机查询的间隔就很难说了~ 至少也是ms级别的。

出0入25汤圆

发表于 2019-4-8 15:57:15 | 显示全部楼层

你这个输出没有格式化,,应该就是简单的RAM读写、数据拷贝,,这已经是最快的输出方式了,,

另外,看耗时没有意义,,应该看消耗了多少个时钟周期,,同样的操作在48MHz的M0上和400MHz的M7上耗时肯定是不一样的,,

出5入4汤圆

 楼主| 发表于 2019-4-8 16:56:30 来自手机 | 显示全部楼层
abutter 发表于 2019-4-8 15:15
H 和 L 直接加个 nop 测出来多少?

290ns。                  

出5入4汤圆

 楼主| 发表于 2019-4-8 17:00:31 来自手机 | 显示全部楼层
yy625 发表于 2019-4-8 15:28
大概16Mbps了,很快了好吗

我算出来是1000000us /(50us / (82字节 * 8位))等于13.1M,这样看速度其实也算快的了,但是这不是我认识的RTT

出5入4汤圆

 楼主| 发表于 2019-4-8 17:01:11 来自手机 | 显示全部楼层
yerrmin 发表于 2019-4-8 15:41
这个本来就是方便测试的,release肯定是要去掉的

之前一直以为几乎不耗时,所以发布版本也没去掉

出5入4汤圆

 楼主| 发表于 2019-4-8 17:02:37 来自手机 | 显示全部楼层
sblpp 发表于 2019-4-8 15:55
RTT的机制是 程序将要输出的信息打到buffer中,然后上位机定时去查询读取。
所以 MCU打印到buffer的时间很 ...

我是用示波器直接测的mcu引脚,不存在上位机读取延迟的问题

出5入4汤圆

 楼主| 发表于 2019-4-8 17:06:24 来自手机 | 显示全部楼层
XIVN1987 发表于 2019-4-8 15:57
你这个输出没有格式化,,应该就是简单的RAM读写、数据拷贝,,这已经是最快的输出方式了,,

另外,看耗 ...

测引脚应该是最直观的了,哦对了,我是mk64主频100M

出0入0汤圆

发表于 2019-4-8 17:23:22 | 显示全部楼层
100M  50us   没有格式化内容  似乎是挺慢

出0入25汤圆

发表于 2019-4-8 17:28:13 | 显示全部楼层
tim4146 发表于 2019-4-8 17:06
测引脚应该是最直观的了,哦对了,我是mk64主频100M


主频100MHz,,每个时钟周期10ns

你上面说 H nop() L ,示波器测量290ns,,也就是29个时钟周期,,我觉得你应该检查下看看是不是哪里有问题

或者用 H nop() nop() nop() nop() nop() nop() nop() nop() nop() nop() L 测下宽度多少,,两次结果比下看看是nop()耗时太长了,,还是IO翻转耗时太长了

出0入25汤圆

发表于 2019-4-8 17:37:51 | 显示全部楼层
tim4146 发表于 2019-4-8 17:06
测引脚应该是最直观的了,哦对了,我是mk64主频100M


或者看下 "H; NOP(); L;”这句生成的反汇编,,

出0入0汤圆

发表于 2019-4-8 17:44:46 | 显示全部楼层
IO翻转需要时间

出0入0汤圆

发表于 2019-4-8 21:43:50 | 显示全部楼层
本帖最后由 pt2go 于 2019-4-8 21:45 编辑

SEGGER_RTT_Write   

SEGGER_RTT_printf
的时间区别还是很大的
你的kprintf是自己定义,还是用了内核库的?
应该是里面封装了好几层,最终才调用的SEGGER_RTT_Write吧?

你试试直接调用
SEGGER_RTT_Write

出0入0汤圆

发表于 2019-4-9 08:24:05 | 显示全部楼层

出0入0汤圆

发表于 2019-4-9 08:44:12 | 显示全部楼层
这东西就是往内存写数据,看你的cpu执行速度和你的printf代码的处理,跟RTT的速度感觉偏离比较远。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-19 00:41

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

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