论文首页哲学论文经济论文法学论文教育论文文学论文历史论文理学论文工学论文医学论文管理论文艺术论文 |
μC/OS-II控制下的任务可以分为休眠态、就绪态、运行态、中断态和挂起态。在嵌入式系统中,为节省存储器空间不会保留休眠态的任务。当某个任务正在占用CPU的使用权时,该任务处于运行态。处于运行态任务的优先权一定高于其它所有就绪态任务的优先权。当系统运行致使某一就绪态任务优先权高于运行态任务的优先权时,调用调度函数,运行态任务将转入挂起态等待某一消息或信号量,或者转入就绪态;而那个拥有较高优先权的任务将占有CPU的使用权而转为运行态。某一时刻只有个任务占有CPU的使用权,也就是说,某一时刻只有一个任务处于运行状态。挂起态的任务在所规定的时间内,如果得到所期待的数据(可能是消息阵列,也可能是信号量),就自动转为就绪态;如果等待超时,就被时间管理函数强制转化为就绪态,等待任务调度。中断发生时,系统将强行剥夺运行态任务对CPU的使用权,将它转入中断态,保存相关数据到堆栈区之后,执行中断服务程序。在中断返回时,系统返回函数将重新进行任务调度,将优先权最高的就绪态任务转为运行态。
在实际系统中,每个任务都是一个无限循环的,分别实现某一特定的功能,由μC/OS-II内核来进行调度。电力行业中对设备可靠性的要求是很高的。对于监测设备,由于在启外运行,所受的电力谐波干扰相当大,有时会引起程序跑飞、死机现象,直到看门狗复位可使系统恢复正常;但在看门狗复位这段时间内,设备对电流、电压的采样不能正常进行,相关采样数据就会丢失,直接影响到电能量计算的准确度,同时会影响到数据通信。笔者利用软件狗的原理设计了一个系统监视任务,用来对其它任务进行监视。在系统运行中,当发现某一个任务运行出现异常时,该任务将按相关步骤做出相应处理。具体做法是:系统监视任务在正常运行情况下处于挂起状态,在某一时间范围内,等待每个被监视任务向它发送代表该被监视任务正常运行的消息。每个被监视的任务在运行状态下向