Raspberry Pi och Arduino: bygga tillförlitliga system med WatchDog timer (2 / 6 steg)
Steg 2: Hur du ställer in Raspberry Pi inre WatchDog Timer
Sammanfattning: I steg 2 i detta Instructable titta vi på hur du ställer in Raspberry Pi inre watchdog timer. Vi också prata om problem med Raspberry Pi inre vakthund och förklara varför en extern WatchDog Timer, som SwitchDoc Labs dubbla WatchDog Timer är ett bättre val i många men inte alla, system.
Ställa in Raspberry Pi inre WatchDog Timer
Först av allt en definition. WTO: S definieras som maximala tiden WatchDog timer kan räkna innan det behöver återställas (med andra ord, när det kommer att starta om datorn om datorn går bort. BCM2835 System på ett Chip som driver Raspberry Pi har en WDT ombord. Den har 20 bitar och räknar ner varje 16us för en Wto -16 sekunder. Detta innebär att du har att skriva till den inre WTD tidigare än varje 16 sekunder, eller WDT kommer eld.
Kör följande kommando för att ladda den interna WatchDog kärna modulen:
$ sudo modprobe bcm2708_wdog
För Raspbian, att ladda modulen nästa gång systemet startas, Lägg till en rad i din/etc/modules fil med "bcm2708_wdog". $ echo "bcm2708_wdog" | sudo tee - en/etc/modules
Nu kör "lsmod" och leta efter raden i nedan:
bcm2708_wdog 3537 0
Detta verifierar att modulen WatchDog var inlästa. Nu ändra/etc/modules och lägga till bcm2708_wdog
att ladda modulen vid uppstart genom att köra följande kommando:
sudo echo bcm2708_wdog >> / etc/modules
Sedan använder vi watchdog(8) demonen för att klappa hunden:
sudo lämplig-få installera watchdog chkconfig
sudo chkconfig vakthund på
sudo /etc/init.d/watchdog start
Watchdog(8) daemon kräver vissa enkel konfiguration på Raspberry Pi. Ändra /etc/watchdog.conf till endast innehålla:
watchdog-device = /dev/watchdog
watchdog-timeout = 14
Realtime = Ja
prioriterade = 1
Intervall att klappa hunden var fjärde sekund: intervall = 4
Slutligen:
sudo /etc/init.d/watchdog restart
Usch! Detta sätter upp den inre Raspberry Pi vakthund.
Testa den interna Raspberry Pi vakthund
För att testa den interna vakthund, upp det som ovan. Nästa, redigera en fil som heter forkbomb.sh och skriver du följande kommandon i filen:
#! / bin/bash
swapoff - en :(){: |: &};:
Kör filen forkbomb.sh:
sudo sh - x forkbomb.sh
Din Raspberry Pi kommer så småningom starta om. En gaffel bomb fungerar så här: funktionen anropas två gånger och rörledningen är backgrounded; varje efterföljande nytt samtal på processerna leker ännu fler samtal till ":" (funktionen). Detta leder snabbt till en explosiv användning av systemresurser, sakta svar avstannat och döda Raspberry Pi möjlighet att klappa watchdog timer. Om du inte inaktiverar swap-enhet sedan har gaffel bomben att fylla som också, vilket gör bomben mycket, mycket långsammare.
Problem med den interna Raspberry Pi vakthund
Det finns dock ett antal problem med den interna vakthund. Den inre vakthund inte makt cykel systemet. Det omstarter Raspberry Pi. Detta innebär att det inte startar om i alla förhållanden. Särskilt i låg effekt / brownout villkor ofta upplevs med Solar Powered system (se våra Solar Power Instructable här).
Om Raspberry Pi tar längre tid att stöveln än 14 sekunder (eller vad du värdet Wto), kan WatchDog brand som sätter Raspberry Pi i en oändlig uppstart sekvens. Detta kan hända. Jag har gjort den.
Om du stoppa Raspberry Pi sudo shutdown -h nu, startas Raspberry Pi aldrig. Om ditt program gör detta av en slump, är du klar.
Jag har hittat den inre vakthund vara otillförlitliga. Jag aldrig kunde spåra det, men det känns som någon form av konflikt mellan användaren utrymme och kernel space. Det finns vissa situationer där Pi inte kommer svarar, men hjärtslagen kan fortfarande förekomma. Hög belastning situationer till exempel.
Den inre vakthund är inte helt oberoende av Pi-hallon. I teorin bör denna fråga inte, men Raspberry Pi kör Linux är ett komplext system.
Dessa är några av de frågor som kan lösas med en extern vakthund. Det betyder dock inte den inre vakthund är värdelös, bara begränsas.