Linux|看门狗的简单使用
看门狗
1 看门狗是什么
在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成各种寄存器和内存的数据混乱,会导致程序指针错误,不在程序区,取出错误的程序指令等,都有可能会陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续正常工作,导致整个系统的陷入停滞状态,发生不可预料的后果。
看门狗,又叫 watchdog,从本质上来说就是一个定时器电路,一般有一个输入和一个输出,其中输入叫做喂狗,输出一般连接到另外一个部分的复位端,一般是连接到单片机。 看门狗的功能是定期的查看芯片内部的情况,一旦发生错误就向芯片发出重启信号。看门狗命令在程序的中断中拥有最高的优先级。
2 有什么用
比如程序中存在试调过程中没有发现的BUG,导致系统死机了,看门狗会将系统重启。
3 简单总结
watchdog 是一个定时器,若将其启用(open),则需要每隔一段时间进行一次喂狗指令
例子:
#include <unistd.h>
#include <string.h>
#include <fcntl.h>
#include <sys/ioctl.h>#define WATCHDOG_FILE_PATH "/dev/watchdog"#define DEFAULT_TIMEOUT 3
static int feed_time = DEFAULT_TIMEOUT-1; /* 单位:(秒) 每过多久,喂一次狗 */
static int timeout = DEFAULT_TIMEOUT; /* 单位:(秒) 超时时间,多长时间没有喂狗,就会重启 */static int fd = -1; static int watchdog_open(void)
{if(fd >= 0){printf("watch dog have been opened.\n");return 0;}/* 打开设备 */fd = open(WATCHDOG_FILE_PATH, O_RDONLY);if(fd < 0){printf("open watch dog fail.");return -1;}/* 设置时间 */ioctl(wdt_fd, WDIOC_SETTIMEOUT, &timeout);printf("the watch dog timeout was set to %d seconds\n", timeout);
}/* 看门狗喂狗线程 */
static void watchdog_thread(void)
{while(1){if (ioctl(wdt_fd, WDIOC_KEEPALIVE, &feed_time)){printf("feed fail.\n");}sleep(timeout);}
}/************************************************************************** @brief 初始化看门狗**************************************************************************/
int watchdog_init(void)
{/* 打开设备 */watchdog_open();pthread_t watchdog_thread_id;pthread_create(&watchdog_thread_id, NULL, watchdog_thread, NULL);
}
Linux|看门狗的简单使用相关推荐
- linux看门狗kill程序,看门狗在嵌入式 Linux 中的应用
By Toradex胡珊逢 1).简介 在嵌入式领域中 Watchdog 看门狗通常被作为用于应对系统或者应用意外崩溃的有效手段.其可以在程序执行出错并无法恢复的情况下,自动重启应用甚至复位整个系统, ...
- linux看门狗使用
作者 QQ群:852283276 微信:arm80x86 微信公众号:青儿创客基地 B站:主页 https://space.bilibili.com/208826118 参考 dev/watchdog ...
- linux软件实现看门狗,一个软件实现的Linux看门狗—soft_wdt
soft_wdt(下面简称本软件)是一个软件实现的Linux看门狗. 本软件是一款开源.免费软件. 下载地址: 本软件和/drivers/watchdog/softdog.c实现的软件看门狗差点儿一样 ...
- Linux看门狗驱动程序设计(三) 测试验证
测试驱动之前需要执行make menuconfig,去掉内核自带看门狗驱动(位于Device Drivers -> Character devices -> Watchdog Timer ...
- linux看门狗树莓派,给树莓派安装看门狗
你还在担心树莓派死机吗?给他装个看门狗吧! 什么是看门狗程序? 看门狗程序就是一个健康监控程序,每间隔一定时间(默认10秒)检查一次是否在设定的健康工作范围内,如果超过即启动硬件复位程序,让设备重新启 ...
- linux看门狗设备,基于Linux构建无人值守系统(看门狗)
基于Linux构建无人值守系统(看门狗) 在各种嵌入式设备soc中基本都提供了看门狗,在很长一段时间里我对看门狗的理解就是"关掉它,不然它会找麻烦".但是当某种需求存在的时候,它又 ...
- linux内核看门狗关闭方法,详解linux 看门狗驱动编写
看门狗是linux驱动的一个重要环节.某些特殊的设备,有时候需要放在一些环境恶劣的地方,比如电信设备.但是,任何软件都不可能100%没有bug.如何保证软件在遇到严重bug.死机的时候也能正常运行呢, ...
- linux下看门狗脚本,Linux看门狗脚本 1.4
最近项目的看门狗经历了三个版本. 第一个版本: 用ps -ef,如果程序挂了就启动 第二个版本: 程序由于运行时会出现不再监听7901端口,所以不能简单判断机器是不是挂了,而是判断此端口是否有监听 第 ...
- linux看门狗脚本,linux 看门狗
先要编写看门狗程序program.sh,内容如: #!/bin/bash #注:本脚本需要以超级用户身份运行. # 监测的时间间隔,秒计 INTERVAL=60 # 重启时间间隔 INTERVALRE ...
最新文章
- SAP PM信息系统
- Linux编程网络通信
- get方法报空指针_智能指针shared_ptr踩坑笔记
- java sonar教程_SonarQube配置与使用教程.PDF
- php strcmp函数用法,php字符串比较函数用法小结(strcmp,strcasecmp,strnatcmp及strnatcasecmp)...
- mybatis的缓存基础
- 北大青鸟汉字注释机内码_众海常用汉字机内码表
- 基于区块链技术的数据管理系统
- PING 192.168.5.13 (192.168.5.13 ) 56(84) data bytes后长时间不响应
- MySQL高级索引及调优篇
- 《机器学习》课后习题 3.4 选择两个 UCI 数据集,比较 10 折交叉验证法和留 法所估计出的对率回归的错误率.
- VUE 项目图标全部替换成阿里巴巴矢量图
- Adnroid 使用安卓自带的人脸识别API
- 三只大老虎和三只小老虎过河
- 调优四剑客的实战演练,福尔摩斯•K带你轻松优化性能
- 如何实现一台机器上运行多个MySQL实例?
- C语言 数组的初始化 数组不初始化会怎样 数组的默认初始值
- 丰田汽车公司中与冲压模具设计制造有关的部门主要有两个
- open-falcon judge部署
- web数字地球_成为地球上最糟糕的Web设计师的13个步骤