ARM+Linux下看门狗应用

来源:互联网 发布:淘宝犯法 编辑:程序博客网 时间:2024/05/29 11:34

笔者在设计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能完全启动。

0 0