TI中文支持网
TI专业的中文技术问题搜集分享网站

关于代码中的printf

HI

我使用的是6678开发板,在使用的过程中,存在这样的一个问题:

在程序运行的过程中,有的时候会出现各种问题,但是如果在程序中加入几个printf语句,就不会有问题。

请问这是什么情况?需要怎么解决呢?

有遇到相同问题的么?

谢谢~

kooking:

能不能发几段代码看看,print会耗费一些系统资源,也有点sleep的效果

wumengtiankuo zhou:

回复 kooking:

谢谢kooking

例如在使用MessageQ时:

if(DNUM == 2 || DNUM == 1)      printf("before get msg, messageQ=0x%x…\n"); if(MessageQ_get(messageQ, &msg, MessageQ_FOREVER)<0) {     printf("This should not happen since timeout is forever\n"); }

如果没有那两句打印,就会出问题,但是每个核get消息是独立的,怎么会需要sleep呢??

谢谢~

King Wang1:

回复 wumengtiankuo zhou:

程序带printf之后会自动编译进去很多函数(从编译库中获取的),因此包括你的代码整体结构会有变化,你可以从这方面去查下。

不过先确定下,你说的出问题是什么问题?

wumengtiankuo zhou:

回复 King Wang1:

谢谢King Wang1

例如,针对MessageQ中MessageQ_put和MessageQ_get的使用,如果没有加打印信息,有时会出现invalid queueId,这应该是在put的时候出现的断言错误。

如果加上printf语句,可能就不会出现这个问题。

但是如果0核向多核put消息,应该不会相互影响的,但是为什么还会出现invalid queueId的错误呢??

而且有的时候是第一次向多核put消息时没有问题,但是第二次可能就会报上述错误?这又是什么原因呢?

谢谢~

赞(0)
未经允许不得转载:TI中文支持网 » 关于代码中的printf
分享到: 更多 (0)