Chinaunix

标题: 嵌入式linux下 printf printk [打印本页]

作者: 飘逸太极    时间: 2009-04-20 11:14
标题: 嵌入式linux下 printf printk
在上层,和驱动里分别printf  和printk,结果两个打印混在一起,乱七八糟的相互被截断了。如何避免。
谢谢。
作者: T-bagwell    时间: 2009-04-20 11:21
楼主,我没明白你的意思
作者: T-bagwell    时间: 2009-04-20 11:21
这个没办法乱,printk是内核里的输出函数,printf是应用程序里的输出函数
作者: 飘逸太极    时间: 2009-04-20 11:35
标题: 打印的情况
感谢版主的回复。

1.rar

26.02 KB, 下载次数: 105


作者: T-bagwell    时间: 2009-04-20 11:37
能不能用tar.gz或者zip的呢?
要不我还得去找unrar
作者: 飘逸太极    时间: 2009-04-20 11:49
是gif文件,但是我直接发,发不上来,说是无效的文件。

1.gif (27.59 KB, 下载次数: 40)

1.gif

1.tar.gz

26.04 KB, 下载次数: 58


作者: 飘逸太极    时间: 2009-04-20 11:50
刚才说是无效的图片,但是发上来还是可以看了。
作者: T-bagwell    时间: 2009-04-20 11:54
哦,这个不是打印的问题
你换上putty就可以了
用putty链接你的串口
或者用minicon
你这个是windows里的超级终端的问题
作者: 飘逸太极    时间: 2009-04-20 13:38
putty 是个软件,我下载了个,不知道如何设置,你有吗,能不能发个设置好的给我呢115200 ,我不知道做什么设置,然后连接?版主如果有空,麻烦帮帮忙了。谢谢。
作者: 飘逸太极    时间: 2009-04-20 13:40
点击open 没反应

2.gif (14.21 KB, 下载次数: 32)

2.gif

作者: 飘逸太极    时间: 2009-04-20 13:43
好像一样的啊。

3.gif (26.66 KB, 下载次数: 28)

3.gif

作者: T-bagwell    时间: 2009-04-20 13:56
前面的CMEM创建错误是怎么回事
作者: 飘逸太极    时间: 2009-04-20 14:02
这个应该是内存分配的时候出错,评估版是256的,我们做的板子是128M的,改的很麻烦,没改了。
作者: T-bagwell    时间: 2009-04-20 14:03
你代码种没有写输出 AAAA的代码吗?
作者: 飘逸太极    时间: 2009-04-20 14:16
在这里打印的。

4.gif (85.29 KB, 下载次数: 23)

4.gif

作者: T-bagwell    时间: 2009-04-20 14:21
多线程代码吗?
作者: 飘逸太极    时间: 2009-04-20 14:40
就一个main,下面没有创建多线程,目前还是在测试阶段,就一个example.

版主你确信printk和printf不会相互打断吗?
作者: T-bagwell    时间: 2009-04-20 14:42
不确信
作者: emmoblin    时间: 2009-04-20 23:03
呵呵,我知道lz的意思,我天天在调这样的代码。
用户层也有打印,内核层也有打印,但是内核层的调度优先级高,所以总是打断用户层的打印。

告诉你解决的办法。
我是这样做的:
printk可能可以做重定向,让他只向串口输出,然后你用网口telnet上去,这样printf会在网口上显示,printk会在串口显示。互相不干扰。
作者: 飘逸太极    时间: 2009-04-21 09:44
感谢19楼 emmoblin 的回复。是个方法。

有没有指令,printk的时候把buf里的数据冲出来,printf的时候把buf里的数据也冲出来。不知道有没有这样的方法。感谢各位的回复。
作者: zhongfrank    时间: 2009-04-21 10:13
原帖由 emmoblin 于 2009-4-20 23:03 发表
呵呵,我知道lz的意思,我天天在调这样的代码。
用户层也有打印,内核层也有打印,但是内核层的调度优先级高,所以总是打断用户层的打印。

告诉你解决的办法。
我是这样做的:
printk可能可以做重定向,让 ...

这个方法能不能再说的具体点?谢谢!
作者: dglwx    时间: 2009-04-21 12:48
标题: 回复 #21 zhongfrank 的帖子
emmoblin 正解!

printk()的打印是输出到控制终端(console)的.如果你设置串口1(ttyS0)为console,那么他会打印到串口上;如果你设置为LCD,那么他就会输出到LCD上。

按照你的说法,我想你是使用串口做console,并且在console上调试程序。这时你只需要使用ssh登录到开发板来调程序,printk就不会输出到你的ssh回话上了。

另外你也可以查看/tmp/message来看哪些是内核的打印信息~
作者: liyaoshi    时间: 2009-04-21 15:55
echo 1 > /proc/sys/kernel/printk

用syslog 代替printf
作者: 飘逸太极    时间: 2009-04-22 15:56
原帖由 emmoblin 于 2009-4-20 23:03 发表
呵呵,我知道lz的意思,我天天在调这样的代码。
用户层也有打印,内核层也有打印,但是内核层的调度优先级高,所以总是打断用户层的打印。

告诉你解决的办法。
我是这样做的:
printk可能可以做重定向,让 ...




这样的话可能printk 和printf 打印的先后关系,就要还自己费神了。不知道有没有printk 后一个指令把buf里的内容冲出来,printf后,相似的指令把buf里的数据也冲出来。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2