打印
[技术问答]

M0半主机调试printf的几点测试

[复制链接]
3087|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
niuyaliang|  楼主 | 2014-2-12 00:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 niuyaliang 于 2014-2-12 11:04 编辑

如题,printf打印耗费的时间太长了,放中断里面打印啥事都耽误了,有没有可能减少这个时间呢
测试疑问见四楼
沙发
niuyaliang|  楼主 | 2014-2-12 10:56 | 只看该作者
dwh000 发表于 2014-2-12 08:22
对中断影响应该不大吧,半主机调试只要用于debug模式!这个打印有缓冲区,传送前基本都是向数组里边写数,满足 ...

经测试,在Debug模式下,打印一次大概需要20ms

使用特权

评论回复
板凳
niuyaliang|  楼主 | 2014-2-12 10:59 | 只看该作者
本帖最后由 niuyaliang 于 2014-2-12 11:04 编辑

测试中的疑问
1.在不初始化串口的情况下,printf函数是不起作用的,不消耗一点时间
2.初始化串口情况下,printf函数起作用,打印一个的时间为1ms
3.在DeBUG情况下,printf打印一个的时间约为20ms
4.无论是否开启DEBUG模式,串口发送的时间大概为1ms

结论:尽量不要用printf输出,实测,用printf的时候,IO的高低电平会出现不规则的变化

使用特权

评论回复
地板
niuyaliang|  楼主 | 2014-2-12 13:27 | 只看该作者
dwh000 发表于 2014-2-12 11:36
把你测试用的代码传上来看一下,我怀疑,你用的不是半主机模式.

MUC140_Example.rar (2.88 MB)
这个时间通过测量GPA,4的高低电平时间得出,用逻辑分析仪抓的波形

使用特权

评论回复
5
niuyaliang|  楼主 | 2014-2-12 16:30 | 只看该作者
dwh000 发表于 2014-2-12 14:06
看了一下,没有问题,那就是半主机模式的时间比较长!
以前没测试过,光看了代码! ...

我也是抓波形的时候才看到,不知道是不是由于逻辑分析仪引起的

使用特权

评论回复
6
a_ziliu| | 2014-2-12 21:25 | 只看该作者
半主機模式與實體的 uart 是有區別的,請看測試報告
UART VS Semihost.pdf (105.47 KB)

使用特权

评论回复
7
error_dan| | 2014-2-13 15:56 | 只看该作者
半主机模式跟uart有毛关系啊,LZ你先弄明白啥是半主机再来发帖好不好,ITM都冤死了.

使用特权

评论回复
8
niuyaliang|  楼主 | 2014-2-13 16:06 | 只看该作者
a_ziliu 发表于 2014-2-12 21:25
半主機模式與實體的 uart 是有區別的,請看測試報告
IF SEMIHOSTED
LDR R0, [R13, #24] ; Get previous PC
LDRH R1, [R0] ; Get instruction
LDR R2, =0xBEAB ; The sepcial BKPT instruction
CMP R1, R2 ; Test if the instruction at previous PC is
BKPT
BNE HardFault_Handler_Ret ; Not BKPT
ADDS R0, #4 ; Skip BKPT and next line
STR R0, [R13, #24] ; Save previous PC
BX LR

把这段代码加到哪个文件里面呢

使用特权

评论回复
9
niuyaliang|  楼主 | 2014-2-13 16:09 | 只看该作者
error_dan 发表于 2014-2-13 15:56
半主机模式跟uart有毛关系啊,LZ你先弄明白啥是半主机再来发帖好不好,ITM都冤死了. ...

半主机确实和UART没关系,我是说,在UART使能的时候,可以用printf输出,串口软件是可以接收到的,这是不是可以理解为,printf也占用了串口的IO呢

使用特权

评论回复
10
从小木丁丁| | 2014-2-14 11:42 | 只看该作者
楼主休要摆龙门阵,你这引申的太远了

使用特权

评论回复
11
从小木丁丁| | 2014-2-14 11:44 | 只看该作者
niuyaliang 发表于 2014-2-12 10:59
测试中的疑问
1.在不初始化串口的情况下,printf函数是不起作用的,不消耗一点时间
2.初始化串口情况下,pr ...

你这个结论有问题,过程确实很重要,但我们一般更注重结果

使用特权

评论回复
12
从小木丁丁| | 2014-2-14 11:45 | 只看该作者
niuyaliang 发表于 2014-2-13 16:09
半主机确实和UART没关系,我是说,在UART使能的时候,可以用printf输出,串口软件是可以接收到的,这是不 ...

不占用不占用不占用

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

212

主题

2427

帖子

7

粉丝