[VxWorks] 请教:vxworks 程序里面的reboot命令不起作用,是什么原因?

lslsino   2008-6-13 17:15 楼主
我开了一网络下载任务,在下载完成后执行reboot(BOOT_CLEAR),单步调试执行到这一步了,可是目标机就是不重启,不知何故?网上有人说可能与看门狗有关系,我也使用了看门狗,但是不知两者之间有何联系?shell下输入reboot命令正常重启。请高手指点。。。。

回复评论 (12)

先不谈网络下载任务。
你直接写一个程序,只执行reboot(BOOT_CLEAR),系统能否重启?
点赞  2008-6-13 20:53
有时单步和直接执行有很大差别的,尤其是调试驱动的时候
点赞  2008-6-14 11:56
直接执行reboot,系统能够重启,不用单步调试也不能重启
点赞  2008-6-15 18:46
用reset能否可以重启?
点赞  2008-6-15 19:27
引用: 引用 3 楼 love_burger 的回复:
直接执行reboot,系统能够重启,不用单步调试也不能重启

不用单步调试也不能重启?
那么你首先要解决的是系统重启,而不是网络下载时无法重启。

现在找到这个问题的原因了吗?
点赞  2008-6-15 19:44
还没找到原因,我说的意思是我不用单步调试,执行整个网络程序,当达到重启条件时它不重启。但我在系统其它地方嵌套重启函数时,可以使系统重启。
点赞  2008-6-15 20:35
引用: 引用 6 楼 love_burger 的回复:
还没找到原因,我说的意思是我不用单步调试,执行整个网络程序,当达到重启条件时它不重启。但我在系统其它地方嵌套重启函数时,可以使系统重启。

那显然是重启的预期条件在你的网络程序里被改变了。
如果这个网络程序是你写的,那么你可以试试这样,将“重启”命令,放在程序初始化的时候;放在运行一段时间,执行过某些动作的时候;放在你所谓的“达到重启条件”之前,这样轮流试一下,看看到底是这个程序一开始就不能重启,还是执行了什么函数之后不能重启。
点赞  2008-6-16 09:43
在主程序第一行也执行不了,执行后只是不再执行以下的代码,但不重启
点赞  2008-6-25 14:17
怎么没人回答呢
点赞  2008-7-4 17:21
你怎么做的重启??用看门狗重启的,还是用reset寄存器写reset请求?还是直接跑回flash首地址??

如果随便在什么地方reboot都不对那就是重启程序的问题,先判断你重启函数执行了没有(点个灯之类),再看看重启函数是否正确
点赞  2008-7-7 11:47
重启函数执行了,单不起作用。这个问题到现在没解决。我只好不在主程序里面调用reboot函数,而改用看门狗进行重启了。
点赞  2008-9-8 10:42
reboot命令执行的钩子函数是syslib.c中的sysToMonitor(),当执行reboot()之后
要停止喂狗,系统等待超时之后,由watchdog给系统发复位信号,系统重启。

请检查:watchdog是否管用?是否是软件喂狗方式?如果是软件喂狗方式,是否已经停止
喂狗?再watchdog超时,有没有发出复位信号?可以通过仪器测试一下就知道了。
点赞  2008-9-10 17:19
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复