微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > ARM技术讨论 > 辉为科技 ARM主板如何设计外部看门狗电路

辉为科技 ARM主板如何设计外部看门狗电路

时间:10-02 整理:3721RD 点击:

Atmel ARM9 系列 CPU 包括at91sam9260、 at91sam9261、 at91sam9263 等芯片都设计了内部看门狗,但由于该看门狗配置寄存器在上电后只能配置一次,而且系统启动时是开启状态。在操作系统引导程序启动时,一般都是将其直接关掉,致使在应用程序中无法使用。在应用上十分不方便。

可以为主板设计外部看门狗电路如下所示:


SP706 具有看门狗、复位功能。 K1 是重启按键, J3 方便引出复位线。74HCT125D 上的1OE、 1A 脚只需接普通的 IO 管脚即可。上电后拉低 1OE 脚电平,看门狗即处于计时状态,这时要不断的变换 1A 脚的电平来喂狗,当 1A 脚的电平保持在低电平或者高电平超过 1.6S, SP706 的 WDO 脚就会输出低电平从而使主板复位。

辉为科技已经为 SP706 设计了驱动支持,以 Linux 操作系统为例:在内核目录下执行

make menuconfig,选择 DeviceDrivers --->

Character devices --->

Watchdog Cards --->

选择 SP706 watchdog,即可将驱动支持编译入内核。


原理图设计中 1OE、 1A 所接 IO 的引脚号,可在 Linux 内核

arch/arm/mach-at91rm9200/board-sam9260k.c (以 HW9260-EK 为例)文件中的以下结

构中指定:

static struct sp706_wdt_platform_datasp706_data = {

.pin_enable = AT91_PIN_PC12,

.pin_wdi = AT91_PIN_PC15,

};

看门狗测试程序如下:

#include <stdio.h>

#include <sys/types.h>

#include <sys/stat.h>

#include <linux/ioctl.h>

#include <linux/watchdog.h>

#include <fcntl.h>

#include <unistd.h>

#include <string.h>

#include <termios.h>

#include <errno.h>

int main(int argc, void *argv[])

{

int fd;

fd = open("/dev/misc/watchdog",O_RDWR);

if (fd < 0) {

printf("open watchdog error!%d\n", fd);

}

while(1){

ioctl(fd, WDIOC_KEEPALIVE, 0);

sleep(1);

}

close(fd);

return 0;

}

当强制结束此程序后,主板会在 1.6S 内重启,说明看门狗已经发挥了作用。


进来学习一下下了,

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top