微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 多任务系统看门狗的实现

多任务系统看门狗的实现

时间: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长时间得不到调度,使得看门狗错误复位。良好的任务划分,配置是不应该出现这种高优先级任务长期执行状况的。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top