Bei meinen bisherigen Recherchen habe ich festgestellt, dass es zwei Ansätze gibt, um einen Watchdog-Timer für Himbeeren zu aktivieren: Verwenden von systemd oder Installieren von Watchdog. Hier wird alles gut erklärt: https://www.raspberrypi.org/forums/viewtopic.php?f=29&t=147501#
Und ich habe es geschafft, es in beide Richtungen zum Laufen zu bringen, aber nicht beim Neustart / Herunterfahren. Ich habe eine Gabelbombe verwendet, um sie zu testen, und sie reagiert darauf, wenn ich jedoch versuche:
sudo poweroff
Es bleibt einfach unten. Ich denke also, gibt es eine Möglichkeit, den Watchdog zu zwingen, während des Neustarts / Herunterfahrens weiterzulaufen, damit er nach einigen Sekunden zurückgesetzt wird, wenn er nicht richtig startet?
Die meisten Ansätze starten Watchdog während des Startvorgangs, aber was ist, wenn Sie es ständig ausführen müssen? Meine Himbeere hat einmal beim Neustart angehalten und ich musste sie manuell ausstecken / einstecken, damit sie funktioniert.
AKTUALISIEREN:
Einige Dinge sind mir jetzt viel klarer. Es gibt 3 Dinge zu beachten:
- Watchdog-Timer
- Watchdog-Daemon
- Watchdog-Service-Daemon
Watchdog-Timer: Ein Register, das einen Reset auslöst, wenn es überläuft. Jeder RPI-Zyklus, den es erhöht, muss regelmäßig gelöscht (gekickt) werden, um ein Zurücksetzen zu vermeiden
Um es beim Booten auszuführen, fügen Sie Folgendes zu /boot/config.txt hinzu :
dtparam=watchdog=on
Watchdog-Daemon: Ein Prozess, der dafür verantwortlich ist, den Watchdog-Timer regelmäßig zu löschen (zu treten)
Es installieren:
sudo modprobe bcm2835_wdt
echo "bcm2835_wdt" | sudo tee -a /etc/modules
sudo apt-get install watchdog
sudo update-rc.d watchdog defaults
Konfigurieren Sie /etc/watchdog.conf :
watchdog-device = /dev/watchdog
watchdog-timeout = 14
realtime = yes
priority = 1
max-load-1 = 24
Konfigurieren Sie / etc / default / watchdog :
watchdog_module="bcm2835_wdt"
Um es zu konfigurieren, fügen Sie Folgendes zu /etc/modprobe.d/watchdog.conf hinzu :
options bcm2835_wdt nowayout=1 heartbeat=10
Referenz: http://vk5tu.livejournal.com/35721.html
Der Heartbeat-Parameter für das Kernelmodul ist die maximale Lücke zwischen den Heartbeats, die das Gerät vor dem Neustart der Hardware sieht
Der Parameter nowayout bestimmt, was passiert, wenn das Gerät / dev / watchdog geschlossen wird: Wird immer noch ein Herzschlag erwartet oder nicht? Der Wert 1 gibt an, dass der Countdown für einen Neustart weiterhin ausgeführt wird. Wenn das Gerät nicht erneut geöffnet und ein Heartbeat geschrieben wird, wird der Computer neu gestartet.
Aktivieren Sie es (Wenn dies nicht funktioniert, kümmern Sie sich zuerst um watchdog.service und versuchen Sie es erneut):
sudo systemctl enable watchdog
Überwachen Sie es:
sudo systemctl status watchdog
Watchdog-Service-Daemon: Wird aktiviert, wenn der Watchdog-Daemon ausfällt / stoppt. In der Regel wird ein Keepalive- Daemon ausgeführt, der den Watchdog regelmäßig startet
Konfigurieren Sie /lib/systemd/system/watchdog.service :
# OnFailure=wd_keepalive.service
- Wenn Sie dies auskommentieren, wird der Keepalive- Daemon deaktiviert. Sobald der Watchdog-Daemon ausfällt / stoppt, kann der Watchdog-Timer nicht mehr RPI neu starten
[Install]
WantedBy=multi-user.target
- Bug-Fix
Schließlich:
Starten Sie das RPI neu. Nach dem Neustart von Himbeere sollte alles starten (Watchdog-Timer und Watchdog-Daemon). Um dies zu überprüfen, verwenden Sie:
cat /var/log/syslog | grep watchdog
Erwartete Ausgabe:
Jun 14 12:09:08 raspberrypi systemd[1]: Starting watchdog daemon...
Jun 14 12:09:08 raspberrypi watchdog[813]: starting daemon (5.14):
Jun 14 12:09:08 raspberrypi watchdog[813]: int=1s realtime=yes sync=no soft=no mla=24 mem=0
Jun 14 12:09:08 raspberrypi watchdog[813]: ping: no machine to check
Jun 14 12:09:08 raspberrypi watchdog[813]: file: no file to check
Jun 14 12:09:08 raspberrypi watchdog[813]: pidfile: no server process to check
Jun 14 12:09:08 raspberrypi watchdog[813]: interface: no interface to check
Jun 14 12:09:08 raspberrypi watchdog[813]: temperature: no sensors to check
Jun 14 12:09:08 raspberrypi watchdog[813]: test=none(0) repair=none(0) alive=/dev/watchdog heartbeat=none to=root no_act=no force=no
Jun 14 12:09:08 raspberrypi watchdog[813]: watchdog now set to 14 seconds
Jun 14 12:09:08 raspberrypi watchdog[813]: hardware watchdog identity: Broadcom BCM2835 Watchdog timer
Jun 14 12:09:08 raspberrypi systemd[1]: Started watchdog daemon.
Und:
ps aux|grep watchdog
Erwartete Ausgabe:
root 813 0.0 0.2 1888 1760 ? SLs 12:09 0:00 /usr/sbin/watchdog
pi 900 0.0 0.2 4752 1992 pts/0 S+ 12:10 0:00 grep --color=auto watchdog
PRÜFUNG :
Töte den Watchdog-Daemon und starte:
ps aux|grep watchdog
Siehe Prozess-ID und töte sie:
root 812 0.0 0.2 1888 1760 ? SLs 12:16 0:00 /usr/sbin/watchdog
pi 898 0.0 0.2 4752 1992 pts/0 S+ 12:16 0:00 grep --color=auto watchdog
sudo kill -9 812
Klassischer Gabelbombentest, ausführen:
: (){ :|:& };:
Führen Sie Folgendes aus, um zu testen, ob die Himbeere zurückgesetzt wird, wenn der Neustart fehlschlägt:
sudo poweroff
- Mit diesem hatte ich einige Probleme
Himbeere sollte nach ca. 15s neu starten.
sudo poweroff
. Manchmal funktioniert es, manchmal nicht: Ssystemctl status watchdog.service
. Das Töten führtwatchdog
NICHT zu einem Neustart, da derwatchdog.service
Startwd_keepalive.service
beim Schließen beginnt , was, wie der Name schon sagt, einen Neustart verhindert.# OnFailure=wd_keepalive.service
- Wenn Sie dies auskommentieren , wird der Keepalive-Daemon deaktiviert. Sobald der Watchdog-Daemon ausfällt / stoppt, kann der Watchdog-Timer den RPI nicht mehr neu starten."Power ist ein Systemdienst / Daemon in pi und wird von einem IC analysiert, der direkt an den Broadcom-IC angeschlossen ist. Der Betriebsworkflow kann unter Bezugnahme auf Systemdateien geändert werden. Soweit ich Ihnen sagen kann, versuchen Sie jedoch, Periperhials in benutzerdefinierten Leistungsregelungsszenarien innerhalb des Konzepts von Interrupts und Watchdog-Timern aufzurufen. Sie können einen Teil dieses Verhaltens ändern, indem Sie den Regel-IC neu drehen und eine Bare-Metal-Programmierung vor dem Start durchführen. Schauen Sie sich diese an und zögern Sie nicht, mich zu kontaktieren, wenn Sie etwas im Sinn haben. Lesen Sie den Befehlssatz für die Referenzlinie der ARM Corp.-Baugruppe sowie die Architekturdokumentation. Es ist im Web.
http://infocenter.arm.com/help/topic/com.arm.doc.dui0489f/DUI0489F_arm_assembler_reference.pdf
https://www.arm.com/files/pdf/CortexM3_programming_for_ARM7_developers.pdf
Übrigens, sagen Sie "Hallo" zu Ihrem Professor ...
quelle