多任务系统中
一般结合嵌入式操作系统,设置一个优先级级别最高的任务作为监视器,以监视各个应用任务是否正常运行,该监视器即为软件看门狗,该任务对其他任务都设定一个计时器,每个被监视的任务在设定的时间内对软件看门狗中相应的定时器定时清零,即喂软狗,在其他任务都正常工作的情况下,软件看门狗对内置的硬件看门狗定时器周期性清零,即喂狗。
在多任务系统中通过创建一个监视任务TaskMonitor,它的优先级高于被监视的任务群Task1、Task2…Taskn。TaskMonitor在Task1~Taskn正常工作情况下,一定时间内对硬件看门狗定时器清零。如果被监视任务群有一个Task_x出现故障,TaskMonitor就不对看门狗定时器清零,也就达到了被监视任务出现故障时系统自动重启的目的。另外任务TaskMonitor自身出故障时,也不能及时对看门狗定时器清零,看门狗也能自动复位重启。接下来需要解决一个问题是:监视任务如何有效监视被监视的任务群。
在TaskMonitor中定义一组结构体来模拟看门狗定时器组