RTOS下看门狗的使用
0赞
发表于 2017/5/31 22:02:36
阅读(2964)
在裸跑系统中看门狗的使用比较简单,只需要在while里定时喂狗即可。对于多任务的RTOS系统,不能简单的在每个任务的while(1)里去喂狗,因为这样的话,当其中一个任务出现问题,系统本该复位重启,但是由于其他任务在运行可以喂狗,系统并没有复位。
在多任务系统中,我们系统其中任何一个task 出错时,系统都能够复位。
一种简单的做法是专门开一个监控task,优先级最低,每个task设置一个全局变量,在每个task循环里,对变量置1,在监控task里判断那些全局变量是否全为1,如果全为1,喂狗,否则不喂狗。然后清所有的全局变量。这样如果一个task出问题,那么不喂狗,一段时间后就会复位重启。
参考:
https://www.highintegritysystems.com/downloads/RTOS_Tutorials/Watchdog_Strategies.pdf
https://barrgroup.com/Embedded-Systems/How-To/Advanced-Watchdog-Timer-Tips
http://www.21ic.com/jichuzhishi/mcu/dog/2015-06-30/632105.html
https://stackoverflow.com/questions/13217959/how-to-use-the-watchdog-timer-in-a-rtos
https://www.digikey.com/en/articles/techzone/2012/may/a-designers-guide-to-watchdog-timers