wuyage

RTOS下看门狗的使用

0
阅读(3006)

    在裸跑系统中看门狗的使用比较简单,只需要在while里定时喂狗即可。对于多任务的RTOS系统,不能简单的在每个任务的while(1)里去喂狗,因为这样的话,当其中一个任务出现问题,系统本该复位重启,但是由于其他任务在运行可以喂狗,系统并没有复位。 

    在多任务系统中,我们系统其中任何一个task 出错时,系统都能够复位。

    一种简单的做法是专门开一个监控task,优先级最低,每个task设置一个全局变量,在每个task循环里,对变量置1,在监控task里判断那些全局变量是否全为1,如果全为1,喂狗,否则不喂狗。然后清所有的全局变量。这样如果一个task出问题,那么不喂狗,一段时间后就会复位重启。



参考:

  1. https://www.highintegritysystems.com/downloads/RTOS_Tutorials/Watchdog_Strategies.pdf 

  2. https://barrgroup.com/Embedded-Systems/How-To/Advanced-Watchdog-Timer-Tips 

  3. https://www.google.com.hk/url?sa=t&rct=j&q=&esrc=s&source=web&cd=19&ved=0ahUKEwiKrsit5ZnUAhUMLo8KHTlWBlw4ChAWCFcwCA&url=http%3a%2f%2fwww%2eeetindia%2eco%2ein%2fSTATIC%2fPDF%2f200011%2fEEIOL_2000NOV04_EMS_TEST_INTD_TA%2epdf%3fSOURCES%3dDOWNLOAD&usg=AFQjCNEilN6ZSeopL-wVt34urL19aFUE0A 

  4. https://www.amobbs.com/forum.php?mod=viewthread&tid=3477082 

  5. https://www.amobbs.com/thread-4118350-1-1.html 

  6. http://www.21ic.com/jichuzhishi/mcu/dog/2015-06-30/632105.html 

  7. https://stackoverflow.com/questions/13217959/how-to-use-the-watchdog-timer-in-a-rtos 

  8. https://www.digikey.com/en/articles/techzone/2012/may/a-designers-guide-to-watchdog-timers