APP下载

ARM+Linux下看门狗应用

2012-12-17深圳市安捷信电气有限公司冯瑞明

电子世界 2012年24期
关键词:看门狗管脚低电平

深圳市安捷信电气有限公司 冯瑞明

一、现象、问题描述

笔者在设计ARM+Linux的产品中,使用了看门狗ADM706.这款IC的定时间隔为1.6S。由于我们使用ARM9的内核,操作系统为Linux。整个系统完全启动时间较长,超出了看门狗的喂狗时间门限。因此在CPU能完全启动开始喂狗前,看门狗又给出了复位信号,导致CPU重启。由于成本的原因,此款看门狗IC的定时复位间隔时间已经定死,不能由CPU设置。我们无法通过更改看门狗的喂狗间隔时间,以满足CPU的启动要求。

图1 使用的看门狗电路图

图2 改进看门狗电路

图3 看门狗波形图

图4 ADM706内部框图

图5 最终版看门狗电路

二、关键过程及根本原因分析

使用的看门狗电路如图1所示:

RESET信号为看门狗输出的复位信号,WDI为CPU输出的喂狗信号。在1.6S的时间内,WDI信号有从高到低或者从低到高的变化,则看门狗内部的定时器清零,重新计数,无复位信号输出。

由于采用LINUX内核的操作系统,BOOTLOADER采用U-BOOT。在从U-BOOT跳转到LINUX内核的过程中,必须关闭定时器中断。CPU不能定时喂狗,且跳转执行的间隔时间都大于1.6S。因此需要关闭看门狗的复位输出信号,以使CPU能完全启动。

三、改进电路及问题

电路图更新为如图2所示:

采用此电路后,CPU启动后,在U-BOOT程序中设置CLOSE_WATCHDOG信号为高电平,可以关闭看门狗的复位信号输出,CPU可以正常启动完成。在装载完驱动程序后,定时每100ms在WDI管脚输出喂狗信号。设置CLOSE_WATCHDOG信号为低,打开看门狗的复位信号输出。当1.6S后,没有喂狗信号后,看门狗输出复位信号复位CPU,CPU重启。

后测试发现如下问题:

1.在U-BOOT下,按复位键,CPU不能复位;

2.在系统启动过程中,电源短时跌落后恢复,系统有时不能启动;

3.有时加载驱动完成后,打开看门狗复位信号时,系统会出现重启现象。

问题分析:

问题一,在U-BOOT下,由于关闭了看门狗的输出信号,因此没有复位信号输出到CPU上,CPU不能复位,表现为复位键不起作用。

问题二,在系统启动过程中,由于CLOSE_WATCHDOG信号为高,关闭看门狗的复位信号输出。当电源短时跌落后恢复,有时CLOSE_WATCHDOG信号依然保持高电平。没有看门狗复位信号输出到CPU上,CPU不能正常的复位,导致系统不能正常启动。

问题三,在加载完成驱动后,先给WDI输出一个脉冲信号喂狗。然后打开看门狗的复位信号。看门狗的波形如图3所示。

从图3中,我们可以看出,假如我们喂狗,MR信号变为高电平。可是RESET信号依然会维持200ms的低电平。此时,我们打开看门狗电路,给CPU输出一个复位信号引起CPU复位。当MR信号维持高电平1.6S,且WDI无电平变化,看门狗输出复位信号。因此打开看门狗电路会引起CPU复位的概率是:0.2/1.6=12.5%。

仔细阅读此看门狗IC的DATASHEET。看门狗IC的框图如图4。

此看门狗IC内部包括三部分功能:

1.看门狗定时器输出电路WDI、WDO管脚

看门狗的定时器,当MR为低电平或WDI有电平变化时清零。当定时器溢出,WDO输出低电平。一旦定时器清零,WDO输出高电平。

2.上电复位电路MR、VCC、RESET

当VCC失败或MR上有低电平,一旦上述条件消失,RESET输出一个200ms宽度的低电平信号。因此,当WDO直接连到MR管脚上后,RESET输出一个周期为1.6S,低电平宽度为200ms的复位信号。

3.电源监控电路PFI、PFO

PFI的输入电平低于1.25V时,PFO输出一个低电平。

根据IC的上述特点更改复位电路如图五所示。

四、总结

采用图五所示电路,使看门狗IC实现看门狗电路和上电复位电路两种功能。满足带操作系统的CPU启动时间长,需通过电压跌落试验等要求。也可以满足需要实现休眠功能要求的场景。此电路可以做为带操作系统CPU或需实现休眠功能的CPU标准复位电路。由于单片机的启动时间短,在无需休眠功能的场景下,单片机的复位电路可不使用图五推荐电路。

[1]ADM706R.

猜你喜欢

看门狗管脚低电平
数字电路中“逻辑非”的用法辨析
铁道车辆高/低电平信号智能发生器设计
把他叫醒
2017款凯迪拉克2.8L/3.0L/3.2L/3.6L车型低电平参考电压总线电路图
基于图像处理的异型电子元器件管脚偏移误差检测方法研究
CMOS数字IC管脚电容的估算与测量
一种采用FPGA实现的通用看门狗电路
把它叫醒
把它叫醒
HC08芯片JVT测试方法的探究