截一下今天在vxworks6.6群中的一段对话(后来发现是和群主对话,呵呵),来说明vxworks6.6中printf在哪里可以被调用并显示出信息。
siling-北京(117838621) 18:09:28
tr(53672549) 和sputnik(195375690)还在么?
sputnik(195375690) 18:10:14
?
siling-北京(117838621) 18:10:35
还是我上面提到的printf
siling-北京(117838621) 18:10:37
呵呵
siling-北京(117838621) 18:10:59
我在usrroot最后添加printf,还是打印不出来,
siling-北京(117838621) 18:12:24
能说明一下么?
sputnik(195375690) 18:12:57
。。,。。。。。
siling-北京(117838621) 18:13:39
就是我前面说的printf在vxworks那个函数后可以打印出信息
siling-北京(117838621) 18:13:59
您前面说不是在usrRoot后么?
sputnik(195375690) 18:16:01
你没玩过5.5吧
sputnik(195375690) 18:16:22
usrroot是不会连接上的 在all目录下
siling-北京(117838621) 18:16:31
没,我对bootm不了解,来公司后就一直弄6.6的
siling-北京(117838621) 18:16:47
?
sputnik(195375690) 18:17:27
你加printf想干什么?
siling-北京(117838621) 18:18:21
呵呵,看看启动信息呀。。。
sputnik(195375690) 18:18:35
什么信息?》
sputnik(195375690) 18:19:00
其实vxworks不是用all目录里面直接生成的,
sputnik(195375690) 18:19:11
是动态调用的
siling-北京(117838621) 18:19:19
我就是想问问哪个地方开始可以使用printf?
siling-北京(117838621) 18:19:36
这有关系么?
sputnik(195375690) 18:20:36
你可以去你的工程目录(不是BSP目录)下的prjconfig.C里面看到和all目录下的usrconfig.c一样的函数
sputnik(195375690) 18:20:49
在prjconfig。c里面添加就可以
sputnik(195375690) 18:21:03
但是不能rebuild工程,只能build工程
siling-北京(117838621) 18:21:19
哦
sputnik(195375690) 18:21:52
只要不是rebuild 就可以了
sputnik(195375690) 18:21:56
你仔细研究下
siling-北京(117838621) 18:23:02
不过我现在在usrappinit.c的usrAppInit()中添加的打印信息就可以看到,但是这个是最后的一个函数了,,,因此我就是想推推前面的什么地方。。。
sputnik(195375690) 18:23:26
可以的退前的
siling-北京(117838621) 18:23:54
不rebuild,只build,不是很理解,,呵呵,小弟愚钝,还是谢谢你了。。。
sputnik(195375690) 18:24:31
rebuild会重新生成prjconfig文件
sputnik(195375690) 18:24:41
build就不会去重新生成
siling-北京(117838621) 18:25:07
哦,呵呵
sputnik(195375690) 18:25:16
你可以在prjconfig.c文件里面的usrroot里面自己添加prinft看看就知道了
siling-北京(117838621) 18:25:27
好,我是一把
sputnik(195375690) 18:25:50
我记得好像是:
usrIosExtraInit (); /* extended I/O system */
sputnik(195375690) 18:25:56
这个之后就可以打印了
siling-北京(117838621) 18:26:03
呵呵
对于群主说的那个
你可以去你的工程目录(不是BSP目录)下的prjconfig.C里面看到和all目录下的usrconfig.c一样的函数 我不是很理解,后来想一想,估计是5.5的vxworks是用all目录里面直接生成的(这也可以体会一下,为什么这个all目录下的usrconfig.c中也有usrRoot了,并且几乎全部都是有预编译的。),可以不管。
1.最终得出一个结论,在usrIosCoreInit()((projConfig.c/usrRoot()))后面的函数中可以调用printf(),但是不知道前面的函数中是如何打印信息的,不明白。
2.对应projConfig.c,这个文件的内容一经编译,马上就会重新生成,你添加的任何东西头没用(后来我查了一下,网上确实有个帖子,可以进行修改,可以参考一下:http://blog.sina.com.cn/s/blog_4ce2cdfa0100iwnb.html),很是麻烦,最后发现还是在usrappinit()这个函数中添加一些功能最好一些
3.通过本次流程分析和我以前移植的end网络驱动(基于vxworks6.6的end模型移植)中,起始的调用流程为这样:
进入endload以前,先是调用在d:/windriver/workspace/mpc8377/prjConfig.c中的usrNetworkInit()函数中的usrNetEndLibInit()
也就是endload/endstart<--muxDevLoad()/muxDevStart()<--srNetEndLibInit()[prjConfig.c]<--usrNetworkInit()<--usrRoot()….
这就是vxworks6.6兼容5.5模式的特性,确实和5.5的调用方式不一样,并且我那时也可以使用printf,是因为这个printf是在usrNetworkInit()之后调用的,呵呵,确实是可以使用的。