看门狗设计思路

问题1:当系统多任务同时工作时,每个线程都有喂狗任务,其中有一个线程停止运行,其他线程还在工作时,此时看门狗不会复位,表现的现象为死机,单个线程终止。

问题2:当系统多任务同时工作时,只有一个最高优先级任务喂狗时,优先级比较低的线程任务死机,优先级高的线程继续工作,导致看门狗不能复位。

问题3:当系统多任务同时工作时,只有一个最低优先级任务喂狗时,在压力测试时,优先级最低的线程长时间没有得到CPU的使用权,无法喂狗,导致系统复位。

问题4:使用高优先级任务对各个任务进行软件判断,导致高优先级资源的浪费,丧失实时系统的优势。

 

 

解决方案"线程运行时间控制策略"

1.系统初始化设置看门狗使能,并看门狗重装计数器。

2.创建系统所用线程和看门狗控制策略线程,控制策略线程设置为最高优先级,创建每个线程所要用到的递减变量。

3.系统所用线程中每次进入while循环后重装当前线程的递减变量。

4.在看门狗控制策略中控制看门狗计数器是否要重装还是延时重装,进入此线程后判断所有线程中的递减变量是为全部为0,如果全部为0则此次不重装计数器,如不是,则依次判断每个线程中的递减变量是否为0当这个线程为0是重新激活此线程,并记下此线程重启次数,当重启次数达到上限,需重启系统。

posted @ 2020-05-23 11:12  DongHaoyu  阅读(618)  评论(0)    收藏  举报