NXP i.MX6 ARM-Linux 看门狗的使用

本文详细介绍了如何在眺望电子TW-IMX6DL-EVM开发板上利用Linux内核的看门狗功能。首先,讲解了看门狗的特性,包括可编程的超时时间和关闭方式。接着,通过ioctl函数设置了看门狗的超时时间,并展示了获取超时时间的方法。然后,阐述了喂狗操作的必要性和关闭看门狗的步骤。最后,提供了一个简单的C语言程序示例,演示了如何打开看门狗、设置超时时间并周期性喂狗,确保系统稳定运行。
摘要由CSDN通过智能技术生成

项目场景:

在眺望电子TW-IMX6DL-EVM开发板上使用看门狗。

编译环境及开发包: 主机:ubuntu18.04
交叉编译器:arm-linux-gnueabihf-gcc
QT5.12.8:qt-everywhere-opensource-src-5.12.8
开发板:TW-IMX6DL-EVM
Linux:Linux-4.1.15

注意:本文章的所有命令涉及到的路径均为眺望电子官方环境路径,需根据自身实际环境改变。本文所演示的平台来自于眺望电子 iMX6 ARM嵌入式平台,这是一个基于NXP iMX6 ARM处理器,支持单核/双核Cortex-A9的核心板。


解决方案:

1.看门狗的使用

i.MX6有一个可编程看门狗(/dev/watchdog),可用于监测应用程序的运行状况。看门狗有如下特点:
  (1)默认超时时间为19秒,超时时间可设置(1~60秒);
  (2)先向看门狗发送一个字符“V”后,可关闭看门狗。

1.1设置看门狗时间

看门狗默认超时时间为19秒,用户可以将超时时间设置为需要的值,通过ioctl实现,具体命令为:WDIOC_SETTIMEOUT,需要一个参数,即超时时间。使用示例:

int timeout = 10;
ioctl(wdt_fd, WDIOC_SETTIMEOUT, &timeout);

1.2获取超时时间

通过ioctl以及WDIOC_GETTIMEOUT命令,可以获得看门狗的超时时间。使用示例:

timeout = 0;
ioctl(wdt_fd, WDIOC_GETTIMEOUT, &timeout);
printf("The timeout is %d seconds\n", timeout);

1.3喂狗操作

看门狗被打开后,必须在超时时间内进行喂狗,最简单的喂狗办法就是向看门狗写一个字符(特殊字符除外)。
关闭看门狗
  需先写入“V”,然后使用close关闭看门狗。使用示例:

write(wdt_fd, "V", 1);
close(wdt_fd);

1.4范例

程序清单1 是一个非常简单的范例。打开看门狗后,将看门狗超时设置为10秒钟,然后在超时时间内周期性喂狗。运行该程序,系统不会复位。如果调整喂狗周期大于10秒,程序将会引起系统复位。

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <linux/watchdog.h>
#define WDT "/dev/watchdog"
int main(void)
{
int wdt_fd = -1;
int timeout;
wdt_fd = open(WDT, O_WRONLY);
if (wdt_fd == -1) {
printf("fail to open "WDT "!\n");
}
printf(WDT " is opened!\n");
timeout = 10;
ioctl(wdt_fd, WDIOC_SETTIMEOUT, &timeout);
ioctl(wdt_fd, WDIOC_GETTIMEOUT, &timeout);
printf("The timeout was is %d seconds\n", timeout);
#if 1 // 循环喂狗
while(1) {
write(wdt_fd, "\0", 1);
sleep(9); 			// 喂狗时间为9秒,小于设定的10秒;如果喂狗时间大于超时时间,将会发生看门狗复位
}
#else 				// 关闭看门狗
write(wdt_fd, "V", 1);
close(wdt_fd);
printf( WDT " is closeed!\n");
#endif
return 0;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

眺望电子-ARM嵌入式

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

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

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

打赏作者

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

抵扣说明:

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

余额充值