一种嵌入式计算机系统的看门狗设计
2021-02-05刘宵辰刘卫华
刘宵辰,赵 刚,刘卫华
(航空工业西安航空计算技术研究所,陕西 西安 710068)
0 引言
看门狗机制在嵌入式计算机系统中应用十分普遍,在嵌入式计算机系统中,看门狗通常用来监控处理器芯片的工作状态,防止处理器芯片工作异常从而导致系统出现故障,提高了嵌入式计算机产品的可靠性和安全性[1]。
看门狗机制可以通过软件或硬件的方式实现,在一定的时间周期内监控系统运行的情况,若系统在规定的时间周期内没有发出触发信号,则看门狗会强制系统复位,以保证系统即使受到干扰仍能够恢复正常工作[2]。看门狗的工作流程如图1所示。
图1 看门狗工作流程
看门狗电路通常应具备的功能有:使能、禁止、喂狗、狗叫中断、复位。当处理器芯片程序正常运行时,在小于狗叫时间间隔内,处理器输出一个喂狗信号,看门狗就不会产生狗叫复位信号或者中断信号。当程序执行异常时,处理器无法在小于狗叫时间间隔内输出喂狗信号,则看门狗产生狗叫复位信号或中断信号,进而使处理器发生复位或中断,最终可使处理器软件从起始位置开始执行,使软件恢复正常。软件看门狗电路集成在处理器的内部,此类看门狗虽然方便设计,但很容易失效,会发生看门狗无法启动的情况。软件看门狗失效的主要原因有:1) 很多处理器自带的看门狗需要将相应的寄存器进行配置后才能启动,若因为程序跑飞无法对寄存器进行配置,看门狗就无法启动,从而发生看门狗失效;2) 若程序执行异常,进入了死循环,但是这个死循环中却包含了喂狗操作,则看门狗不会狗叫、系统无法复位,看门狗发生失效[3];3) 硬件损坏,在运行过程中处理器硬件发生损坏也会造成看门狗失效。一些硬件看门狗电路将RESET引脚连接到处理器的复位引脚上,当狗叫发生后,系统无法记录狗叫发生的时机,不利于故障分析。
本文设计了一种看门狗机制,采用看门狗芯片结合处理器实现,既能实现系统监控,还能对狗叫的时刻进行信息记录,通过分析记录的信息有助于故障定位[4]。
1 方案设计
1.1 基本电路
基本电路如图2所示。复位芯片的RESET引脚连接至处理器的复位引脚,WDI引脚与处理器任意一个I/O引脚(如GPIO5)相连,MR引脚与处理器另一I/O引脚(如GPIO6)连接,WDO引脚接入处理器的非屏蔽中断(NMI)输入引脚。当处理器定时翻转GPIO5引脚的高低电平,可实现看门狗芯片的喂狗操作,看门狗芯片不会发出复位信号。当处理器的程序跑飞,出现“死机”等异常情况的时候,处理器无法完成定时喂狗操作,看门狗芯片的WDO引脚将输出一个低电平信号,该低电平将触发处理器的非屏蔽中断。处理器在中断服务程序中可对此次中断进行信息记录,比如将中断发生的时间记录至NVRAM或FLASH中,还可以记录中断发生的总次数。处理器记录完信息后,将GPIO6输出一个低电平,触发看门狗芯片的手动复位功能,看门狗芯片RESET引脚产生复位信号,完成处理器的复位。
图2 看门狗电路
1.2 处理器中断服务程序设计
处理器中断服务程序所做的工作有如下三点:
1) 从NVRAM或FLASH中读取处理器进入非屏蔽中断的次数,将该次数加1后,将新的次数重新写入NVRAM或FLASH中,此外将中断发生的时间记录到NVRAM或FLASH中;
2) 实现一次看门狗喂狗操作;
3) 将指定的GPIO引脚输出一个低电平。
具体流程见图3。
图3 处理器中断服务程序流程框图
2 结语
本文设计的看门狗机制,将看门狗芯片与处理器进行了结合,不但能实现看门狗功能,避免了单一采用软件看门狗易出现看门狗失效的问题,还能对狗叫的时刻进行信息记录,通过分析记录的信息将有助于故障定位。此看门狗电路实际测试功能符合设计要求,可提高系统的安全性和可靠性,已经在实际项目中广泛使用,对其他类似的看门狗机制设计具有借鉴意义。
[1] 施伟,刘建辉.看门狗在实际应用中的问题分析及对策研究[J].世界科技研究与发展,2009,31(5):842-843.
[2] 贾鹏,曾少航,贾秀玲.M054硬件看门狗重启记录设计与应用[J].工业控制计算机,2019,32(6):63-64.
[3] 谷智明.新型纯硬件看门狗电路设计分析研究[J].无线互联科技,2019,16(7):121-122.
[4] 刘博,强凯,詹思维.PowerPC数据处理模块的看门狗设计[J].航空计算技术,2019,49(2):105-107.
[5] 胡瑞忠.英飞凌XC2336B单片机看门狗编程——基于DAVE2.0平台[J].山西电子技术,2014(6):59-60.
[6] 杜璧秀.基于DSP2812的“看门狗”设计[J].数字技术与应用,2015(1):153-153.