ARM+Linux下看门狗应用
摘要:本文介绍了在ARM+Linux的条件下,传统的看门狗应用存在的问题及解决方案。此方案可以做为ARM+Linux条件下的一种标准解决方法。
现象、问题描述
笔者在设计ARM+Linux的产品中,使用了看门狗ADM706。这款IC的定时间隔为1.6s。由于使用ARM9的内核,操作系统为Linux。整个系统完全启动时间较长,超出了看门狗的喂狗时间门限。因此在CPU能完全启动开始喂狗前,看门狗又给出了复位信号,导致CPU重启。由于成本的原因,此款看门狗IC的定时复位间隔时间已经定死,不能由CPU设置。我们无法通过更改看门狗的喂狗间隔时间来满足CPU的启动要求。
关键过程及根本原因分析
使用的看门狗电路如图1所示。
RESET信号为看门狗输出的复位信号,WDI为CPU输出的喂狗信号。在1.6s的时间内,WDI信号有从高到低或者从低到高的变化,则看门狗内部的定时器清零,重新计数,无复位信号输出。
由于采用Linux内核的操作系统,Bootloader采用U-Boot。在从U-Boot跳转到Linux内核的过程中,必须关闭定时器中断。CPU不能定时喂狗,且跳转执行的间隔时间都大于1.6s。因此需要关闭看门狗的复位输出信号,以使CPU能完全启动。
改进电路
仔细阅读此看门狗IC的Datasheet。看门狗IC的框图如图2。此看门狗IC内部包括三部分功能:
(1)看门狗的定时器,当MR为低电平或WDI有电平变化时清零。当定时器溢出,WDO输出低电平。一旦定时器清零,WDO输出高电平。
(2)当VCC失败或MR上有低电平,一旦上述条件消失,RESET输出一个200ms宽度的低电平信号。因此,当WDO直接连到MR管脚上后,RESET输出一个周期为1.6s,低电平宽度为200ms的复位信号。
(3)PFI的输入电平低于1.25V时,PFO输出一个低电平。
电路图更新为如图3所示。
- Linux嵌入式系统开发平台选型探讨(11-09)
- 基于ARM体系的嵌入式系统BSP的程序设计方案(04-11)
- 在Ubuntu上建立Arm Linux 开发环境(04-23)
- 达芬奇数字媒体片上系统的架构和Linux启动过程(06-02)
- SQLite嵌入式数据库系统的研究与实现(02-20)
- 革新2410D开发板试用手记(04-21)