Watchdog overview

来自百问网嵌入式Linux wiki
Zhouyuebiao讨论 | 贡献2020年5月7日 (四) 23:59的版本 (创建页面,内容为“This article provides information on the Linux<sup>®</sup> WDT (Watchdog Timer) framework.<br/> It explains how to activate the WDT interface and, based on examp…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)

This article provides information on the Linux® WDT (Watchdog Timer) framework.
It explains how to activate the WDT interface and, based on examples, how to use it.

Framework purpose

A Watchdog Timer is a hardware circuit that can reset the computer system in case of a software fault (for example, when the software is blocked in an infinity loop and cannot reload the timer before an elapsed time).

System overview

Component description

From client application to hardware, the components are the following:

  • Application (User Space): an application that configures and regularly pings the char device[1].
  • User Space interface: composed of a standard char device[1].
  • Watchdog framework (Kernel Space): this component provides a watchdog common interface [2](through a char device) to configure and control a watchdog hardware block.
  • User driver (Kernel Space): Linux kernel drivers that handle internal peripherals or external devices under watchdog core[3].
  • STM32 peripherals (Hardware): Hardware block for watchdog handling (IWDT).

API description

A userspace daemon notifies the kernel watchdog driver that the userspace is still alive at regular intervals. This is done via the char device[1] special device file ((/dev/watchdog). When such a notification occurs, the driver tells the hardware watchdog that everything is in order, and that the watchdog must wait a little more to reset the system. If the userspace fails (because of a RAM error or a kernel bug), the notifications stop and the hardware watchdog resets the system after the timeout occurs, thus causing a reboot.

Configuration

Kernel configuration

By default, the Watchdog Timer (WDT[2]) framework is activated in STMicroelectronics deliveries. If a specific configuration is needed, this section indicates how the WDT framework can be activated/inactivated in the kernel.

The WDT framework can be activated in the kernel configuration via Linux® Menuconfig tool. Follow the steps below to configure the kernel via Menuconfig:

[*] Watchdog Timer Support  --->
    [*] Disable watchdog shutdown on close
    [*] Update boot-enabled watchdog until userspace takes over
    <*>   STM32 Independent WatchDoG (IWDG) support

Device tree configuration

DT configuration can be done thanks to STM32CubeMX.

Please refer to the IWDG device tree configuration.

How to use the Watchdog framework

The Watchdog framework can be used by the userspace application:

  • The kernel provides a simple code example[4]
  • Busybox provides a watchdog daemon[5]
  • Systemd provides a watchdog support[6]

How to trace and debug the framework

How to trace

For details on dynamic trace usage, refer to How to use the kernel dynamic debug.

Board $> echo "file drivers/watchdog/* +p" > /sys/kernel/debug/dynamic_debug/control

References

<securetransclude src="ProtectedTemplate:PublicationRequestId" params="10344 | 2019-01-17 | AnneJ"></securetransclude> <securetransclude src="ProtectedTemplate:ArticleBasedOnModel" params="Framework overview article model"></securetransclude>