Linux Watchdog/看门狗

article/2025/7/10 7:26:08

Watchdog timer(看门狗定时器)是一种电子计时器,其用于检测和恢复计算机故障。在正常操作期间,计算机定期重置看门狗定时器以防止它“超时”。如果由于硬件故障或程序错误,计算机无法重置看门狗,定时器将生成超时信号,复位和重启计算机。
Watchdog timer通常出现在嵌入式系统或设备中,在这些设备中,人们无法轻易访问设备或无法及时对故障作出反应。在这样的系统中,如果计算机挂起,计算机就不能依赖于人来调用重启; 它必须靠Watchdog timer来复位。

简单Watchdog

微控制器通常包括一个集成的片上看门狗。在其他计算机中,看门狗可以驻留在直接连接到CPU的附近芯片中,看门狗和CPU可以共享公共时钟信号,如下面的框图所示,或者它们可以具有独立的时钟信号。
在这里插入图片描述

Linux Watchdog daemon

通常通过写入看门狗控制端口来完成重启看门狗定时器的操作,通常称为“踢”看门狗或者“喂狗”。在Linux操作系统中,用户空间程序通过与看门狗设备驱动程序交互来启动监视程序。
watchdog是这样一个守护进程:它打开/dev/watchdog,并且经常写入它以使内核不能重置,至少每分钟一次。每次写入都会延迟重启时间。一段时间不活动后,看门狗硬件将导致复位。该守护进程对应的程序是/usr/sbin/watchdog
watchdog守护程序的配置文件是/etc/watchdog.conf,一个典型的配置文件如下

test-binary     = /usr/bin/test.sh 
watchdog-device = /dev/watchdog0
realtime        = yes
priority        = 1

这些选项分别表示:

选项说明
test-binary执行给定的二进制文件以执行一些用户定义的测试
watchdog-device设置监视程序设备名称
realtime如果设置为yes,看门狗将自己锁定到内存中,因此永远不会被换出
priority设置实时模式的计划优先级

Watchdog设备驱动配置

首先配置watchdog_device结构体,默认timeout是1秒,因为该watchdog设备如果超过1.6秒没有被“喂”,就会复位整个嵌入式设备:

static struct watchdog_device test_wdt_dev = {.groups = test_wdt_groups,.info = &test_wdt_info,.ops = &test_wdt_ops,                                                                                                                                         .min_timeout = 1,.max_timeout = 2,.timeout = 1,
};

接着配置watchdog_ops结构体,这里的ping就是每隔1秒会执行的函数:

static const struct watchdog_ops test_wdt_ops = {                                                                                                                 .owner = THIS_MODULE,.start = test_wdt_start,.stop = test_wdt_stop,.ping  = test_wdt_ping,
};

下面就是pingstartstop函数的实现:

static inline void test_wdt_enable(bool enable)
{if (enable)gpio_direction_output(GPIO_WD_EN, WD_EN_ACTIVE);elsegpio_direction_output(GPIO_WD_EN, !WD_EN_ACTIVE);
}static int test_wdt_start(struct watchdog_device *wdog)
{test_wdt_enable(true);return 0;
}static int test_wdt_stop(struct watchdog_device *wdog)
{test_wdt_enable(false);return 0;
}static void test_wdt_ping(void)
{gpio_direction_output(GPIO_WD_IN, 0);udelay(20);gpio_direction_output(GPIO_WD_IN, 1);udelay(20);
}

在驱动初始化函数里面注册这个watchdog设备:

static int __init test_wdt_init(void)
{int err = 0;watchdog_set_nowayout(&test_wdt_dev, true);watchdog_stop_on_reboot(&test_wdt_dev);err = watchdog_register_device(&test_wdt_dev);if (err) {pr_err("Failed to register watchdog device\n");return err;}return 0;
}
module_init(test_wdt_init);

测试Watchdog设备的复位功能

首先把test_watchdog驱动编译成模块形式:

CONFIG_TEST_WATCHDOG=m

进入系统后在/etc/init.d/test_watchdog脚本里面自动执行如下两个命令,加载驱动和启动守护进程:

#!/bin/sh/sbin/modprobe test_watchdog
/usr/sbin/watchdog

这时候watchdog设备已经正常工作,并且watchdog守护进程会每隔1秒喂它(调用test_wdt_ping()),以防止嵌入式设备被复位。如果我们kill该守护进程,内核就会停止调用test_wdt_ping()喂狗,整个设备就会在1.6秒内被该watchdog复位:

$ killall -9 watchdog

http://chatgpt.dhexx.cn/article/Th34LJb5.shtml

相关文章

Watchdog-最后的看门狗

Watchdog是什么 Watchdog是android framework中一个java类(在线源码), 也可以认为是一种系统检查和处理的机制。比如在Android系统中,SystemServer进程会对应用程序进行卡顿检测和处理(即ANR检测等),那么谁来检测和处理SystemSer…

用Tensorflow实现AlexNet识别猫狗数据集(猫狗大战)【附代码】

AlexNet识别猫狗数据集 一、下载猫狗数据集二、AlexNet实现1、划分训练集和测试集2、将训练集和测试集图片放缩为224x2243、AlexNet实现4、训练过程5、模型测试 三、总结 一、下载猫狗数据集 百度云链接如下 链接:https://pan.baidu.com/s/1KWYrGVVS6He7lO7skyhgQQ…

宠物狗之家

开发工具(eclipse/idea/vscode等): 数据库(sqlite/mysql/sqlserver等): 功能模块(请用文字描述,至少200字):

Rockchip开发系列 - 9.watchdog看门狗

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录 dts中的watchdog节点watchdog驱动文件TRM watchdog:WDT框图功能描述计数器中断系统复位复位脉冲长度操作流程图寄存器描述寄存器设置…

Linux系统看门狗应用编程

目录 看门狗应用编程介绍打开设备获取设备支持哪些功能:WDIOC_GETSUPPORT获取/设置超时时间:WDIOC_GETTIMEOUT、WDIOC_SETTIMEOUT开启/关闭看门狗:WDIOC_SETOPTIONS喂狗:WDIOC_KEEPALIVE 看门狗应用编程实战 在产品化的嵌入式系统…

宠物狗之家网站

开发工具(eclipse/idea/vscode等): 数据库(sqlite/mysql/sqlserver等): 功能模块(请用文字描述,至少200字):

java泛型波浪号_DogBrown

对于 Vue.nextTick 方法,自己有些疑惑。在查询了各种资料后,总结了一下其原理和用途,如有错误,请不吝赐教。 概览官方文档说明:用法: 在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个…

Linux Watchdog看门狗理解

目录 介绍 简单Watchdog Linux Watchdog daemon Watchdog设备驱动配置 测试Watchdog设备的复位功能 介绍 Watchdog timer(看门狗定时器)是一种电子计时器,其用于检测和恢复计算机故障。在正常操作期间,计算机定期重置看门狗定…

噪音监测传感系统

远程噪声监测系统是一种新型的环境监测系统,可以实现环境噪声、温度、粉尘、风向等参数的在线自动监测。它利用传感技术、通信技术和计算机及其网络技术将环境状态有机地结合起来,形成一起来。  原理  首先,远程噪声监测现场噪声测量控制…

Matlab——噪声的检测和处理实验

本次实验首先由matlab中的randn()函数模拟噪声信号,模拟确定性信号s(t)的抽样信号,并根据有无信号到达的概率,计算两者出现的频数,在matlab软件中仿真出有信号到达和无信号到达的两种接受信号。在此基础上,根据似然比和…

【去噪】A Physics-Based Noise Formation Model for Extreme Low-Light Raw Denoising噪声建模详解

文章目录 0. 前言1. 主要贡献1.1 建立了一个全面的噪声模型,可以准确地描述低光环境下的真实噪声结构1.2 提出了一种噪声参数标定方法1.2.1 估计系统总体增益 K K K1.2.2 估计颜色偏差噪声的 μ c \mu_c μc​1.2.3 估计行噪声的σr1.2.4 估计读出噪声中的λ、σT …

【Android工具】用手机测量噪声的工具软件,噪声仪分贝计,量化噪声声音工具...

今天分享一个通过手机麦克风测量环境噪声的工具——声级计(噪声仪)。 本来是要分享另一款的,但下载下来的是xapk的安装包,太麻烦了,功能差不多,大家就先用这款吧,有条件的朋友可以去play自己下载…

噪声系数评估的简易方法

1. 概要 有三种常用的噪声系数的测量方法[1],分别是: 噪声系数测试仪法增益法Y系数法 这些测量方法都需要利用复杂的测试仪器,有没有更简单的方法呢?本文介绍一个简单的仅需要RF信号发生器以及一个能采集数据的设备(比…

图像传感器噪声建模与分析

图像传感器在做信号采集的时候往往会引入噪声,在采集到的raw图像中能够拿到没有经过任何处理的传感器信号,因此对于传感器噪声进行分析与建模有助于我们认识传感器噪声,从而帮助我们设计raw图像的降噪算法。本文从传感器模型层面分析单像素点…

气象插值软件anusplin的使用

气象插值软件anusplin的使用 1、简介 ANUSPLIN软件包提供了一种使用薄板平滑样条对噪声多变量数据进行透明分析和插值的工具。该软件包通过提供全面的统计分析、数据诊断和空间分布的标准误差来支持这一过程。通常运用到降水、气温等气象要素的插值当中,可以引入高…

【模拟CMOS集成电路】电路噪声—— 噪声分析基础(1)

电路噪声——噪声分析基础(1) 前言1噪声的定义2噪声的描述2.1统计特性(1)平均功率(2)功率谱密度(PSD) 2.2噪声相关指标(1)SNR(2)SNDR …

IPEmotion的NVH噪声测试模块——坎贝尔图

德国IPETRONIK的IPEmotion软件除了可以对之前介绍的热管理试验及热管理台架试验、电性能试验和道路试验等各种进行基本的温度、模拟量和数字信号的采集分析外,无论专业版、开发版还是分析版均支持噪声分析模块。该模块支持噪声数据离线后处理,包括Campbe…

ADC噪声全面分析 -02- ADC 噪声测量方法和相关参数

ADC 噪声测量方法和参数 在解释如何测量 ADC 噪声之前,重要的是要了解,当您查看 ADC 数据表规格时,相关指标参数表征对象是 ADC,而不是设计的电子系统。因此,ADC 制造商测试 ADC 噪声的方式和测试系统本身应该展示 AD…

频谱分析仪测量噪声系数方法介绍

用频谱仪测量噪声系数:测量框图为:基于噪声系数的定义得到的一个测量公式为:NFPNOUT-(-174dBm/Hz20lg(BW)Gain)(1)公式中,PNOUT是已测的总共输出噪声功率,-174dBm/Hz是290oK(室温)时环境噪声的功…

频谱分析仪怎么测相位噪声?

相位噪声是评估和分析信号质量的一个重要参数,尤其在无线通信、雷达信号处理等领域中具有重要的意义。罗德(Rohde & Schwarz)频谱分析仪是一款常见的仪器,可以用于测量和分析信号的相位噪声。本文将详细介绍罗德频谱分析仪相位…