一个vxworks的问题,请大家帮帮忙

jackydi 2007-10-10 10:06:37
我在调试单板的时候发现了一个问题请大家帮忙看看怎么解决。

单板上的应用程序是一个大循环,由于需要死机重启的功能,还设置了看门狗,定时4秒。单板在测试的时候会不断的输出调试信息,而且信息量很大。如果打开了telnet连接,此时telnet就是标准输出了,单板跑几天都没有问题。但是如果在输出调试信息的时候关闭了telnet,单板跑一会儿就死掉重启了。重启的原因应该就是看门狗超时了。
于是我怀疑是打印信息的关系,在一条printf()语句的前后添加了时间计数,显示的结果是:打开telnet时,printf语句的执行时间不超过1ms,但是如果关闭了telnet(没有任何标准输出了),printf语句的执行时间超过了20ms。显然在里面有超时机制在起作用。我想问的是,怎样不让printf语句等待而直接返回?
...全文
163 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jackydi 2007-11-05
  • 打赏
  • 举报
回复
问题解决了。把标准IO重新定向就可以了。

多谢楼上各位的帮助。

回复nanjingzg:
用的是硬件看门狗,使用CTLD做的,具体怎么做的是硬件人员完成的,我也不太清楚。应该是把一个CPLD引脚连接到了控制器的复位引脚上。
nanjingzg 2007-10-12
  • 打赏
  • 举报
回复
请问楼主用的是硬件的看门狗,还是VxWorks的看门狗啊?
我也想来实现死机重启,不知道该怎么做?先谢谢了!
jackydi 2007-10-10
  • 打赏
  • 举报
回复
没人知道怎么解决吗?
sterrys 2007-10-10
  • 打赏
  • 举报
回复
把 printf 换掉,自己定义 dbg 消息输出

#ifdef DBG
#define dbgMsg(...) printf
#else
#define dbgMsg()
#endif
lsbing 2007-10-10
  • 打赏
  • 举报
回复
logMsg不会阻塞,或者自己写打印函数
lsbing 2007-10-10
  • 打赏
  • 举报
回复
用logMsgDAYIN

2,184

社区成员

发帖
与我相关
我的任务
社区描述
xworks是美国 Wind River System 公司( 以下简称风河公司 ,即 WRS 公司)推出的一个实时操作系统。
社区管理员
  • VxWorks开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧