看门狗

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|看门狗的简单使用相关推荐

  1. linux看门狗kill程序,看门狗在嵌入式 Linux 中的应用

    By Toradex胡珊逢 1).简介 在嵌入式领域中 Watchdog 看门狗通常被作为用于应对系统或者应用意外崩溃的有效手段.其可以在程序执行出错并无法恢复的情况下,自动重启应用甚至复位整个系统, ...

  2. linux看门狗使用

    作者 QQ群:852283276 微信:arm80x86 微信公众号:青儿创客基地 B站:主页 https://space.bilibili.com/208826118 参考 dev/watchdog ...

  3. linux软件实现看门狗,一个软件实现的Linux看门狗—soft_wdt

    soft_wdt(下面简称本软件)是一个软件实现的Linux看门狗. 本软件是一款开源.免费软件. 下载地址: 本软件和/drivers/watchdog/softdog.c实现的软件看门狗差点儿一样 ...

  4. Linux看门狗驱动程序设计(三) 测试验证

    测试驱动之前需要执行make menuconfig,去掉内核自带看门狗驱动(位于Device Drivers -> Character devices -> Watchdog Timer ...

  5. linux看门狗树莓派,给树莓派安装看门狗

    你还在担心树莓派死机吗?给他装个看门狗吧! 什么是看门狗程序? 看门狗程序就是一个健康监控程序,每间隔一定时间(默认10秒)检查一次是否在设定的健康工作范围内,如果超过即启动硬件复位程序,让设备重新启 ...

  6. linux看门狗设备,基于Linux构建无人值守系统(看门狗)

    基于Linux构建无人值守系统(看门狗) 在各种嵌入式设备soc中基本都提供了看门狗,在很长一段时间里我对看门狗的理解就是"关掉它,不然它会找麻烦".但是当某种需求存在的时候,它又 ...

  7. linux内核看门狗关闭方法,详解linux 看门狗驱动编写

    看门狗是linux驱动的一个重要环节.某些特殊的设备,有时候需要放在一些环境恶劣的地方,比如电信设备.但是,任何软件都不可能100%没有bug.如何保证软件在遇到严重bug.死机的时候也能正常运行呢, ...

  8. linux下看门狗脚本,Linux看门狗脚本 1.4

    最近项目的看门狗经历了三个版本. 第一个版本: 用ps -ef,如果程序挂了就启动 第二个版本: 程序由于运行时会出现不再监听7901端口,所以不能简单判断机器是不是挂了,而是判断此端口是否有监听 第 ...

  9. linux看门狗脚本,linux 看门狗

    先要编写看门狗程序program.sh,内容如: #!/bin/bash #注:本脚本需要以超级用户身份运行. # 监测的时间间隔,秒计 INTERVAL=60 # 重启时间间隔 INTERVALRE ...

最新文章

  1. SAP PM信息系统
  2. Linux编程网络通信
  3. get方法报空指针_智能指针shared_ptr踩坑笔记
  4. java sonar教程_SonarQube配置与使用教程.PDF
  5. php strcmp函数用法,php字符串比较函数用法小结(strcmp,strcasecmp,strnatcmp及strnatcasecmp)...
  6. mybatis的缓存基础
  7. 北大青鸟汉字注释机内码_众海常用汉字机内码表
  8. 基于区块链技术的数据管理系统
  9. PING 192.168.5.13 (192.168.5.13 ) 56(84) data bytes后长时间不响应
  10. MySQL高级索引及调优篇
  11. 《机器学习》课后习题 3.4 选择两个 UCI 数据集,比较 10 折交叉验证法和留 法所估计出的对率回归的错误率.
  12. VUE 项目图标全部替换成阿里巴巴矢量图
  13. Adnroid 使用安卓自带的人脸识别API
  14. 三只大老虎和三只小老虎过河
  15. 调优四剑客的实战演练,福尔摩斯•K带你轻松优化性能
  16. 如何实现一台机器上运行多个MySQL实例?
  17. C语言 数组的初始化 数组不初始化会怎样 数组的默认初始值
  18. 丰田汽车公司中与冲压模具设计制造有关的部门主要有两个
  19. open-falcon judge部署
  20. web数字地球_成为地球上最糟糕的Web设计师的13个步骤

热门文章

  1. 经典的mac阅读写作学习工具合集
  2. 爬虫关键信息获取与MongoDB数据库使用方法
  3. mac上通过自动操作达到右键通过vscode打开文件、文件夹
  4. JS - 解决鼠标单击、双击事件冲突问题(原生js实现)
  5. 四川企立方电商:拼多多团长是不是免费的
  6. 微软edge如何退出登录_如何更新Microsoft Edge
  7. %02d得意思是什么?
  8. 个人总结之前端技巧-----页面的设计流程
  9. 物联卡实名用不用注销,物联卡三个月不用会自动注销吗
  10. 解决了!微信公众号数学公式排版