首页 理论教育嵌入式系统应用中的看门狗技术

嵌入式系统应用中的看门狗技术

【摘要】:1.硬件“看门狗”电路硬件实现可以采用带有“看门狗”功能的系统监控芯片,如MAX705/706/813L,其“看门狗”定时器时序如图10-11所示。2.软件“看门狗”由硬件电路实现的“看门狗”技术,可以有效地克服主程序或中断服务程序由于陷入死循环而带来的不良后果。软件“看门狗”技术的基本思路是在主程序中对T0中断服务程序进行监视,在T1中断服务程序中对主程序进行监视,T0中断监视T1中断。

由于干扰或程序设计错误等原因,程序在运行过程中可能会偏离正常的顺序而进入到不可预知、不受控制的状态,甚至陷入死循环,我们称之为“飞程序”或“死机”。为防止这种情况造成重大损失,并让系统能够自动恢复正常运行,必须对系统运行进行监控,完成系统运行监控功能的电路或软件称为“看门狗”(Watchdog)电路或“看门狗”定时器。其工作原理是系统在运行过程中,每隔一段固定的时间给“看门狗”一个信号,表示系统运行正常。如果超过这一时间没有给出信号,则表示系统失灵,“看门狗”将自动产生一个复位信号使系统复位,或产生一个“看门狗”定时器中断请求,系统响应该请求,转去执行中断服务子程序,处理当前的故障,如停机或复位等。

“看门狗”有如下特性:

1)本身能独立工作,基本上不依赖于CPU。CPU只在一个固定的时间间隔内与之打一次交道,表明整个系统“目前尚属正常”。

2)若CPU落入死循环,能及时发现并使整个系统复位。

“看门狗”技术可由硬件实现,也可由软件实现,还可由软、硬件结合实现。

1.硬件“看门狗”电路

硬件实现可以采用带有“看门狗”功能的系统监控芯片,如MAX705/706/813L,其“看门狗”定时器时序如图10-11所示。硬件实现电路如图10-12所示。

图10-11 MAX705/706/813L“看门狗”定时器时序图

图10-12 MAX705/706/813L系统监控电路图

如果在时间tWD=1.6ms之内不触发“看门狗”输入引脚WDI,则“看门狗”输出引脚将由高电平变为低电平。触发“看门狗”的方法是在WDI引脚加一个正脉冲。通常用单片机的一个I/O口(如P1.0)来控制WDI,而将接到单片机的中断输入引脚(如),如图10-12所示。系统通过软件不断在I/O口输出正脉冲使WDO保持高电平,两次脉冲时间间隔不大于1.6 ms,则永远为高电平,说明程序执行正常。一旦单片机不能正常工作,如程序跑飞或陷入死循环,则程序不能按时向I/O口发出脉冲,当两次发出正脉冲的时间间隔大于1.6 ms时将变为低电平,使单片机产生一个中断,“看门狗”定时器中断服务子程序将对系统做相应处理,使程序恢复正常运行,并重新触发WDI,则又回到高电平并从“0”开始计时。也可把接到手动复位端,直接产生一个复位信号使系统复位,保证系统重新工作。

2.软件“看门狗”

由硬件电路实现的“看门狗”技术,可以有效地克服主程序或中断服务程序由于陷入死循环而带来的不良后果。但在工业应用中,严重的干扰有时会破坏中断方式控制字,导致中断关闭,这时硬件“看门狗”电路的程序将不能实现。采用软件进行双重监视,可以弥补这一不足。

软件“看门狗”技术的基本思路是在主程序中对T0中断服务程序进行监视,在T1中断服务程序中对主程序进行监视,T0中断监视T1中断。这种相互依存、相互制约的抗干扰措施使系统运行的可靠性大大增加。(www.chuimin.cn)

系统软件包括主程序、高级中断子程序和低级中断子程序3个部分。假设将定时器T0设计成高级中断、定时器T1设计成低级中断,从而形成中断嵌套

主程序流程图如图10-13所示。主程序在完成系统测控功能的同时,还要监视T0中断因干扰而引起的中断关闭故障。A0为T0中断服务程序运行状态观测单元,T0中断运行时,每中断一次A0便自动加1。在测控功能模块运行程序(主程序的主体)入口处,先将A0之值暂存于E0单元。由于测控功能模块程序一般运行时间较长,设定在此期间T0产生定时中断(设T0定时溢出时间小于测控功能模块运行时间),从而引起A0的变化。在测控功能模块的出口处,将A0的即时值与先前的暂存单元E0的值相比较,观察A0的值是否发生变化。若A0之值发生了变化,说明T0中断运行正常;若A0之值没变化,说明T0中断关闭,则转到0000H处,进行出错处理。

T1中断程序流程如图10-14所示。T1中断服务程序在完成系统特定测控功能的同时,还监视主程序的运行状态。在中断服务程序中设置一个主程序运行计时器M,T1每中断一次,M便自动加1。M中的数值与T1定时溢出时间之积表示时间值。若M表示的时间值大于主程序运行时间T(为可靠起见,T要留有一定余量),说明主程序陷入死循环,T1中断服务程序便修改断点地址,返回0000H,进行出错处理。若M小于T,则中断正常返回。M在主程序入口处循环清0,如图10-13所示。

T0中断程序流程如图10-15所示。T0中断服务程序的功能是监视T1中断服务程序的运行状态。该程序较短,因而受干扰破坏的几率很小。A1、B1为T1中断运行状态的观测单元。A1的初始值为00H,T1每发生一次中断,A1便自动加1。T0中断服务程序中若检测A1>0,说明T1中断正常;若A1=0,则B1单元加1(B1的初始值为00H);若B1的累加值大于Q,说明T1中断失效,失效时间为T0定时溢出时间与Q值之积。Q值的选取取决于T1、T0定时溢出时间。例如,T0定时溢出时间为10ms,T1定时溢出时间为20ms,当Q=4时,说明T1的允许失效时间为40ms,在这样长的时间内,T1没有发生中断,说明T1中断出现了故障。由于T0中断级别高于T1中断,所以T1的任何中断故障(死循环、故障关闭)都会因T0的中断而被检测出来。

若系统受到干扰,主程序可能发生死循环,而中断服务程序也可能陷入死循环或因中断方式字的破坏而关闭中断。主程序的死循环可由T1中断服务程序进行监视,T0中断的故障关闭可由主程序进行监视,T1中断服务程序的死循环和故障关闭可由T0的中断服务程序进行监视。由于采用了多重软件监测方法,大大地提高了系统运行的可靠性。

3.软、硬件结合的“看门狗”技术

硬件“看门狗”技术能有效监视程序陷入死循环,但对中断关闭故障无能为力;软件“看门狗”技术对高级中断服务程序陷入死循环无能为力,但能监视全部中断关闭的故障。因此,可将硬件“看门狗”和软件“看门狗”结合起来,取长补短,获得更加优良的抗干扰效果。

图10-13 主程序流程图

图10-14 T1中断程序流程图

图10-15 T0中断程序流程图