& Y* N4 {9 n; k0 v* B% T& d+ D: @ * N6 Z7 o* ?# w `0 y% y, c2.2 RTOS系统级容错组件 # C6 U& K; w! s) h5 D5 W) v: P+ e8 r8 u4 o
RTOS系统级容错组件,包括系统内核级容错支持组件、系统自诊断组件和主/备用机切换支持组件。' |" K# J% C) _3 N" D* [% }
0 L$ u2 z0 f, Q" h$ _# @2 L* B {# h
(1) 内核级容错支持组件) A" `9 N4 u9 h7 }8 F- Z* r
3 A( j% R& q% i3 t3 ]
为支持操作系统级和应用级通信,在该系统中,每个节点上保存两个对象表,一个本地任务表,一个容错任务表。本地任务表在每个节点上都是不同的,它包含在此节点上创建的所有任务。容错对象表包含系统中所有的容错任务,在所有节点上是一样的。为保持在所有节点上容错任务表的一致性,每个节点对容错对象的创建、删除等都必须通知给备份节点。利用检查点技术和传递日志法,保持主系统和备份系统的备份任务的状态和数据一致。一旦主机发生故障,系统程序自动进行主/备用机切换,备用机系统使备份任务就绪,利用实时任务的调度策略,使备份任务在备份机上发生重调度,成为主机。 5 Z) q X: `" S4 O; c4 Z; d 6 `4 m! v6 O1 c6 B0 q' R(2) 系统自诊断组件 * [) [: q0 q8 @1 ?: a" a4 M / `2 s. P* H/ ~1 j* c) I如图3所示,系统中采用自诊断的方法来诊断系统级的故障,用任务级的检测来诊断应用级的故障。 * _' e, _1 D# Y/ ]$ C- T% i( t# a$ v1 [
自诊断划分为几个不同的测试阶段,系统启动自检测阶段和周期自检测阶段。自动启动诊断的因素有:主/备用机定时切换和主机发生故障。周期自检测阶段根据系统需求,周期性检测外设和通信口。每个阶段对应设备的几种功能块,包括CPU的自诊断、中断响应自诊断、串口自诊断、定时器自诊断、离散量自诊断、RAM自诊断等。 + h$ A. Z& ], T8 X# @4 {$ L7 v% J, \) C
由于结果比较是实时系统中任何事务处理都需要经历的步骤,因此把任务级的故障检测放到结果判别部分进行。! P2 l$ S" T5 i! v0 N+ w( w0 j
4 K: ~! B5 \# `2 y) a& K3 t
(3) 主/备用机切换支持组件, r/ I G7 Q" r: @" b, B
% O n. U; H) |1 o; Z- r* W仲裁检测电路中对主/备用机设置了“看门狗”监视器。当主/备用机处于正常工作状态时,运行于CPU上的某一任务周期性地对“看门狗”施加复位信号,这样,“看门狗”计数器就不可能产生溢出触发信号;当CPU出现故障时,“看门狗”会输出一个离散触发信号并发出报警,此时,系统进行自动切换,让备用的系统机工作。2 N% b; \5 w; O* H
5 y, \' \6 L* `# ~( w. y