Watchdog

Der RevPi Flat verfügt über zwei unabhängige Watchdogs. Der erste ist Teil des BCM2837 SoC, welcher auch auf dem Raspberry Pi 3 eingesetzt wird. Der zweite ist der externe Watchdog-Baustein Maxim MAX6370.

BCM2837

Der Watchdog des BCM2837 ist der bevorzugte Watchdog, da er sich so wie andere Watchdogs unter Linux verhält. Du kannst ihn sowohl über die Gerätedatei /dev/watchdog0 als auch als Standardwatchdog über die Gerätedatei /dev/watchdog erreichen.

MAX6370

Der MAX6370 ist über die Gerätedatei /dev/watchdog1 erreichbar.
Um ihn zu aktivieren, muss der GPIO4 einmalig auf High gesetzt werden. Allerdings lässt er sich über diesen GPIO nicht mehr deaktivieren. Für die Aktivierung über die Kommandozeile kannst Du das gpiod‑Tool verwenden:
gpioset -m time -u 1000 pinctrl-bcm2835 4=1

gpiod-Paket

Der Befehl „gpioset“ ist Teil des gpiod‑Pakets. Wenn dies nicht installiert ist, kannst Du es selbst mit sudo apt install gpiod installieren.
Wenn Du den GPIO aus deiner Anwendung heraus bedienen willst, ist die „libgpiod“ richtig für Dich. Diese stellt auch ein Python‑Interface zur Verfügung.
Du benötigst dann folgende Pakete: libgpiod‑dev libgpiod2 python3‑libgpiod

Der Timeout des MAX6370 ist fest auf 60 Sekunden eingestellt und kann nicht verändert werden.

Hinweis: nachdem der MAX6370 aktiviert wurde, kannst Du ihn nur durch das Trennen der Stromversorgung deaktivieren. Ein Neustart/Reset deaktiviert den Watchdog nicht. Dies bedeutet, dass ein Neustart bei aktivem Watchdog nicht länger als 60 Sekunden benötigen darf. Bei Überschreitung führt der Watchdog nämlich einen Reset der Hardware durch. Aber auch nach diesem Reset bleibt der Watchdog aktiv. Der darauf folgende Bootprozess darf wiederum nicht mehr als 60 Sekunden benötigen bis der Watchdog getriggert wird.

Watchdog unter Linux

Es gibt verschiedene Möglichkeiten, einen Watchdog unter Linux zu verwenden. Das RevPi Image und Raspbian setzen auf „systemd“. Dies ist somit auch die präferierte Methode, um den Watchdog zu verwenden. „systemd“ kann verwendet werden, um einen Hardware‑Watchdog zu triggern. Anwendungen, die durch den Watchdog überwacht werden sollen, werden dann von „systemd“ überwacht. Dies hat den Vorteil, dass mehrere Anwendungen überwacht werden können. Folglich muss auch nicht zwingend das ganze System neu gestartet werden, sondern nur die einzelne Anwendung.

Weiterführende Dokumentation:
systemd for Administrators, Part XV – Watchdogs
Raspberry Pi – Forum: RPi3B+ and watchdog…