看门狗说明

看门狗说明

1、 看门狗原理

主板上提供一个可按分或秒计时的,最长达255级的可编程看门狗定时器,WDT超时事件发生时系统复位。

本程序(w83627hf_wdt.c)是基于Winbond83627芯片的看门狗驱动程序。

2、 驱动程序接口

l wdt_open :打开设备,应用程序调用open时进入该函数。

l wdt_close :关闭设备,应用程序调用close时进入该函数

l wdt_write :写设备,若传入数据大小不为0则喂狗;应用程序调用write时进入该函数。

l wdt_ioctl :应用程序调用ioctl时进入该函数,通过传入不同的参数实现不同的功能。主要参数如下:

WDIOC_GETSUPPORT :获取看门狗信息watchdog_info(见w83627hf_wdt.h)

WDIOC_KEEPALIVE :喂狗,同write函数功能类似

WDIOC_SETTIMEOUT :设置超时值

WDIOC_GETTIMEOUT :获取超时值

WDIOC_SETOPTIONS :设置看门狗状态,开启(WDIOS_ENABLECARD)或关闭(WDIOS_DISABLECARD)

3、 应用程序编写

主要步骤如下(请参考代码w83627hf_test.c):

l 打开设备

调用open方法,返回值为已打开的设备,若小于0表示打开失败,以下的调用都要用该返回值做参数,表示操作该设备。

wdt = open(WDT_DEVICE, O_RDWR);

l 开启看门狗

调用ioctl方法,传入WDIOC_SETOPTIONS参数,设置开启(WDIOS_ENABLECARD)状态,方法如下:

ioctl(wdt, WDIOC_SETOPTIONS, WDIOS_ENABLECARD);

l 设置看门狗超时值(可选,默认为60s)

调用ioctl方法,传入WDIOC_SETTIMEOUT参数,设置指定的超时值。

ioctl(wdt, WDIOC_SETTIMEOUT, &timeout);//timeout为超时值

l 喂狗

一般用while(1)循环在超时时间(timeout)内定时喂狗,若在timeout内没喂狗,则系统复位。提供2种喂狗方法:

(1) 调用write方法,注意传入参数大小不要为0。

write(wdt, &arg, sizeof(arg));//若sizeof(arg)为0则不会喂狗

(2)调用ioctl方法,传入WDIOC_KEEPALIVE参数

ioctl(wdt, WDIOC_KEEPALIVE,0);//第3个参数驱动不用

l 关闭看门狗

若不需要使用看门狗,则关闭它,注意关闭后即使超时值到也不会复位。

示例应用程序并没有调用此函数,因为我们并不想关闭看门狗。

调用ioctl方法实现,传入WDIOC_SETOPTIONS参数,设置关闭状态

ioctl(wdt, WDIOC_SETOPTIONS, WDIOS_DISABLECARD)

l 关闭设备

调用close方法。

close(wdt);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值