跳到主要内容

Watchdog

1. 简介

看门狗(Watchdog)是一种重要的硬件或软件机制,通常用于监控系统或设备的运行状态,并在检测到系统失去响应或出现故障时进行自动复位或执行特定的恢复操作。它的主要作用是提高系统的可靠性和稳定性,防止系统陷入不可恢复的状态。

看门狗的主要作用:

  1. 检测系统故障: 看门狗定时器会不断计时,系统正常运行时需要定期对看门狗进行“喂狗”操作(即复位计时器)。如果在规定的时间内系统没有进行喂狗操作,看门狗会认为系统发生了故障(如死机或进入无响应状态)。
  2. 自动复位系统: 当看门狗检测到系统未按时喂狗时,它会触发系统的自动复位操作,通常是重启设备。这确保了系统能够从错误状态中恢复,不会长时间停滞。
  3. 增强系统的容错能力: 在实时操作系统或嵌入式系统中,看门狗可以作为最后一道防线,在系统程序出现不可预知的问题时自动恢复系统,避免手动干预。
  4. 防止软件卡死: 看门狗可以用来监测软件运行情况,尤其是在长时间运行的软件中防止死循环、卡死等问题。它要求软件在规定的时间内完成某些关键任务,否则看门狗将触发复位。

2. 使用

  1. 内部看门狗的设备名称为/dev/watchdog,用户可通过 echo 命令来控制该设备.

    # 写入任意内容(大写字母‘V’除外),开启看门狗,每 44 秒内需要写入一次(喂狗)
    echo A > /dev/watchdog

    # 开启看门狗,并且内核会每隔 22 秒自动喂一次狗
    echo V > /dev/watchdog

3. 设备树简介

  1. Watchdog DTS 源文件在kernel-6.10/arch/arm64/boot/dts/rockchip/rk3576.dtsi已经定义,我们可以直接调用。

    wdt: watchdog@2ace0000 {
    compatible = "snps,dw-wdt";
    reg = <0x0 0x2ace0000 0x0 0x100>;
    clocks = <&cru TCLK_WDT0>, <&cru PCLK_WDT0>;
    clock-names = "tclk", "pclk";
    interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
    status = "disabled";
    };
  2. 设备文件路径位于kernel-6.1/arch/arm64/boot/dts/rockchip/luckfox-omni3576.dts,开启watchdog的代码片段如下:

    &wdt{
    status = "okay";
    };