IMX6UL实现独立硬件看门狗的方案

IMX6UL实现独立硬件看门狗的方案

平台:飞凌嵌入式OKMX6UL开发板

系统:Linux3.14.38

看门狗工作原理:

看门狗其实就是一个可以在一定时间内被复位的计数器。当看门狗开启时,就会自动开始计时,当到达一定时间内没有被复位,就会产生一个复位信号使系统重启。系统正常运行时,需要在看门狗设定的时间间隔内将计数器清零,不让复位信号产生。如果系统不出问题,程序按时“喂狗”,一旦系统跑飞,不能进行“喂狗”,复位信号产生,系统复位重启。

看门狗分类:

1、cpu内部自带的看门狗是将芯片内部的定时器来作为看门狗,通过程序的初始化,写入初值,设置溢出时间,并启动定时器。可以选择开启或关闭。

优点:可以通过程序改变溢出时间;可以随时禁用

缺点:需要初始化,如果在初始化之前系统跑飞,无法实现系统复位,系统恢复能力降低。

2、独立看门狗芯片是一个独立的芯片,主要有一个喂狗引脚和一个复位引脚,如果没有在一定时间内改变喂狗引脚的电平状态,就会输出复位信号,使系统进行复位。此类看门狗一旦上电,无法禁用。

优点:无需配置,上电即用。无法禁用,系统恢复能力强。

缺点:无法灵活配置溢出时间,灵活性降低。

本文主要想在OKMX6UL开发板上适配独立看门狗芯片

如果想使用独立看门狗芯片,主要分为两部分:1、uboot启动过程中喂狗;2、内核启动过程中喂狗;

一、uboot启动过程中喂狗实现:

uboot源码中有看门狗的接口,可以通过宏定义CONFIG_HW_WATCHDOG来实现。

1、include/configs/mx6ul_14x14_evk.h中添加宏定义

#define CONFIG_HW_WATCHDOG

2、board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c中添加引脚复用及喂狗函数

static iomux_v3_cfg_t const iox_pads[] = {
   
   
MX6_PAD_SNVS_TAMPER9__GPIO5_IO09 | MUX_PAD_CTRL(NO_PAD_CTRL),
}void hw_watchdog_reset(void)
{
   
   
gpio_direction_output(IMX_GPIO_NR(5,9), 0);

gpio_direction_output(IMX_GPIO_NR(5,9), 1);

}
二、内核启动过程中喂狗实现:

添加一个定时器驱动,在定时器服务函数 中实现喂狗

1、设备树添加节点

  32         hw-wdt-gpio {
   
   
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TOLA--

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值