先说一下环境,使用Vxworks5.5+Tornado2.2,BSP是Pentium4的,因为没有奔四的机器,所以在机器上用Vmware虚拟了一个机器,编译好的自启动vxworks镜像就在虚拟机上运行。一共有3台PC作了这样的设置,现在只拿两台作测试,用串口直连线连接两台PC。因为是自启动的vxworks,所以把网络模块裁剪掉了。
程序是拿以前用过的,确定是可用的。
现在的情况是这样,从编译到加载的整个过程都没有问题。但是在运行自己的程序时会出现一些诡异的问题,大概是这样:
1、使用ioctl(fdtty0,SIO_HW_OPTS_SET,XXXXXX)设置串口控制参数时,只能设成一位停止、无校验,如果加入校验则无法发送接收(一台用程序,一台用串口调试助手测试);可用的参数是“CLOCAL|CS8)”,单用“CS8”也不能收发。
2、即使是用了那个能收发的参数,在程序运行时也会出现发送的问题(用write())。表现为,开始阶段向串口发送正常,但是如果加入别的程序段,再用write(),串口就不发东西了,但是write()函数还是返回了正确的数值。我用最简单的收发程序测试了,开始的串口调试助手可以收到,然后程序也可以收到串口调试助手发的消息,之后程序就write不出东西了,但是write函数返回的数值是正确的。
我觉得可以排除程序的问题,因为我都用上了最普通的读写程序作了测试。那么请教这样的情况可能是因为什么呢?网上看到的vmware+vxworks的帖子都是跟网络有点关系,我这个应该不存在这个问题啊。
以前用Tornado2的时候,用系提供统的串口驱动,一段时间后串口就没动作了,也不报错。后来同事自己写了驱动
引用: 引用 4 楼 seemknow 的回复:
以前用Tornado2的时候,用系提供统的串口驱动,一段时间后串口就没动作了,也不报错。后来同事自己写了驱动
呃,最关键的是我是最近才开始接触Vxworks甚至嵌入式的,在短期内学会写驱动似乎不现实。。。