多任务系统看门狗的实现
时间:04-06
来源:互联网
点击:
关系,因此被监视的任一任务发生故障,硬件电路看门狗就能复位。
为实现多任务系统的看门狗监视功能额外增加了TaskMonitor任务,这个任务占用执行时间多少也是一个重要问题。假设TaskMonitor任务一个监视周期延时1.5秒,此外需要执行保存当前计数值,判断是否“喂狗”等语句,它的CPU占用时间是很小的。用一个具体的试验证实,使用50M工作频率的CPU(S3C4510),移植vxWorks操作系统,cache不使能条件下监视10个任务,每个监视周期占用220~240微秒。可见该任务绝大多数时间都处于任务延时状态。
被监视任务可能有获取消息、等待一个信号量等的语句,往往这个消息、信号量的等待是无限期的等待。这就需要将这类语句作一些修改。比
如在vxWorks中将一次无期限的获取信号量操作
semTake(semID, WAIT_FOREVER); // WAIT_FOREVER为无限时间等待
分解为
do
{
ResetWatchDog; // “喂狗”操作
}while(semTake(semID, sysClkRateGet( )) != OK); // 1s内的等待信号量操作
多次的时间范围内的获取信号量操作,这样才能保证及时“喂狗”。
另外需要注意的是系统中是否有的任务优先级比TaskMonitor高并且长时间处于执行状态,TaskMonitor长时间得不到调度,使得看门狗错误复位。良好的任务划分,配置是不应该出现这种高优先级任务长期执行状况的。
- μC/OS-II在SOPC中的硬件实现(06-05)
- 单片机编程经验(04-26)
- TMS320F2812系统中的软件复位方法(04-20)
- 单片机系统抗干扰应用实例(11-05)
- uC/OS-II 系统的多任务看门狗设计(10-03)
- VxWorks共享看门狗定时机制的设计与实现(10-05)