请教一个有趣的问题:在UCOSII中,还需要使用看门狗吗?如果要用,可怎么去喂这条狗?

2019-07-21 00:35发布

 大家知道,UCOSII中的各项执行任务都是个死循环,各项任务的切换都是靠自身的优先级来进行;

 而看门狗是在正常执行程序中,去喂它,使它不会溢出,而产生复位动作。但如果程序跑飞了,进入死循环,没有在一定的时间去喂它,

就会产生复位动作,使程序重新启动初始化,恢复正常工作。可在UCOSII中,各个任务本身就是个死循环,它们自己就有个专用震荡器,这还用

使用看门狗吗?如果要用,这条狗怎么去喂它,是在各项任务里,添一条喂狗指令?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
30条回答
dong
1楼-- · 2019-07-21 08:49
 精彩回答 2  元偷偷看……
toddchen
2楼-- · 2019-07-21 12:17
回复【8楼】toddchen:

以前一直搞不懂窗口看门狗有啥用,不是已经有独立看门狗了,搞一个上下限的窗口是为了啥?
今天看了楼主的帖子,突然想,是不是窗口看门狗就是为了RTOS准备的呢?
但是我的看法是,跑窗口看门狗的任务优先级应该是,介于空闲、统计任务,和工作任务之间的。
让其它工作任务的优先级都高于它,那么在实际运行时,还能保证被在窗口中及时喂狗,则说明其它
优先级高于它的任务都被及时调用了。
以上是个人呆傻的看法而已。


==========================================================
 有一定的道理,我回去也好好想想,养窗口看门狗?
dong
3楼-- · 2019-07-21 14:36
 精彩回答 2  元偷偷看……
dong
4楼-- · 2019-07-21 17:00
回复【11楼】toddchen:

现在的MCU越来越先进,窗口看门狗绝对不是为了跑裸机准备的。
系统越来越复杂,任务越来越多,对资源的争夺难以调和,所以UCOSIII也引进了时间片---保障单任务的执行。
那么所有任务的最小时间总和,和最大时间总和之间,就是窗口,不在这个范围的代表系统异常,需强制复位。

=========================================================================
 谢谢!又学到关于窗口看门狗的知识,

  也希望其他朋友都参入本题的讨论。
toddchen
5楼-- · 2019-07-21 18:47
今天怎么没人参加讨论?
dong
6楼-- · 2019-07-21 22:27
ucosii的while死循环,和看门狗没什么交集...
看门狗该喂的时候还得喂,你可以专门设置一个最高优先级的任务,来喂狗,也可以用定时器中断,来喂狗,或是其他办法,都可以。

一周热门 更多>