Umgang mit Stromausfällen im eingebetteten SOC

Ich bin mit der Verwendung von BODs mit Mikrocontroller-Geräten vertraut, damit das System sicher zurückgesetzt und gestartet wird, wenn die Versorgung normal ist.

Ich bin auch mit Projekten zu SOCs auf Geräten wie Raspberry Pi vertraut, die bei einem Stromausfall stark in Mitleidenschaft gezogen werden können. Ich nehme an, was normalerweise passiert, ist eine Beschädigung des Dateisystems? Was auch immer die Ursache ist, es ist nicht ungewöhnlich, dass ein Raspberry Pi (BeagleBone usw.), der plötzlich ausgeschaltet wird, beim Einschalten nicht mehr sauber bootet.

Aber es gibt viele kommerzielle SOC-Geräte in unseren Haushalten (wie Router usw.), auf denen eingebettetes Linux ausgeführt wird und die anscheinend nie darunter leiden. Ich muss meinen Router oder mein LTE-Gateway nicht herunterfahren, bevor ich sie ausschalte, aber sie scheinen immer sauber zu booten. Mit welchen Tricks wird das erreicht und kann ich diese in meine eigenen Projekte einbauen?

Danke!

Schäbiges Power-Sequencing unter Voreingenommenheit? Es bootet nicht sofort wieder? Oder Stunden/Minuten später?
Read only file systems help... Sind Sie sicher, dass Ihr Gateway auf einem SOC läuft?
@DKNguyen, wie ich meiner Erfahrung nach sage, sprechen wir eher von Korruption in der FS als von schlampiger Power-Sequencing.
@Ron Beyer - ja, es ist ein vollständiges Linux-System, ich habe Shell-Zugriff usw

Antworten (1)

Abgesehen von der Verwendung von BSB- und Leistungsüberwachungsschaltkreisen gibt es einige Dinge, die die eingebetteten Systeme tun, um Situationen mit abrupten Stromausfällen zu mildern:

  • Nur-Lese-Dateisysteme
    • Das bedeutet, dass das Dateisystem nicht beschädigt werden kann, da es explizit als schreibgeschützt markiert ist. Es kann Daten geben, die in einige Protokolle geschrieben werden, die in einer anderen Partition gespeichert sind, und einige der anderen Techniken helfen, diese Daten zu schützen.
  • Schreibcache deaktivieren
    • Schreib-Caching wird hauptsächlich in Desktop-Systemen verwendet und verzögert das Schreiben des Dateisystems auf einen späteren Zeitpunkt, wenn ein Datenblock geschrieben werden muss. Wenn Sie dies deaktivieren, können Sie sicherstellen, dass bei einem Stromausfall kein zwischengespeicherter Schreibvorgang verpasst wird.
  • Auswahl des richtigen Festplattendateisystems
    • Dateisysteme wie ext4 , yaffs und ubifs wurden speziell entwickelt, um in unzuverlässigen Systemen gut zu funktionieren (obwohl ubifs Schreib-Caching unterstützt).
  • Dateisystempartitionierung
    • Es ist eine gängige Methode, eine schreibgeschützte Partition zu haben, die den Kernel und kritische Programme enthält, und eine weitere Partition, die für nicht kritische Daten Lese-/Schreibzugriff hat.
    • Vollständige Sicherungskopien des Kernels, der Rootfs und der Datenpartitionen haben.
    • Speichern des Wiederherstellungs-Betriebssystems auf einer anderen Partition
    • Dies wird in Verbindung mit der Überprüfung des Dateisystems beim Start verwendet. Einige Dateisysteme durchlaufen während des Bootens eine Prüfung, die feststellt, ob die Partition beschädigt ist oder nicht. Das Bootsystem kann hiermit auf ein Backup wechseln.
  • Vermeiden Sie es, kritische Daten im Speicher zu speichern, schreiben Sie sie so schnell wie möglich in den Speicher.

Es gibt viele andere Möglichkeiten, um zu helfen, aber es sollte beachtet werden, dass Raspbian kein robustes System ist, genau wie der sofort einsatzbereite Beaglebone oder andere „Spielzeug“-Embedded-SOC-„Computer“. Diese sollen einen einfachen Benutzer so schnell wie möglich zum Laufen bringen und ihm keine industrielle Lösung bieten.

Wenn Sie mehr über Sicherungs-/Wiederherstellungssoftware lesen möchten, empfehle ich wärmstens das swupdate-Tool von SBabic, es ist äußerst gut dokumentiert und geht auf einer hohen Ebene verschiedene Schemata durch, die Industriekunden zum Partitionieren, Sichern, Wiederherstellen und Wiederherstellen verwenden.

Ein Großteil des tatsächlichen Unterschieds liegt in der Art des verwendeten Speichergeräts, kleinere Systeme verwenden NOR-Flash oder kleines NAND mit einer einfachen Flash-Übersetzungsschicht. Größere eingebettete Geräte verwenden häufig eMMC aus NAND mit einer sehr robusten Flash-Übersetzungsschicht. Raspberry Pis verwenden billige Multi-Level-Flash-Zellen und eine undokumentierte Übersetzungsschicht auf der Consumer-SD-Karte ... Mit einer unbekannten Übersetzungsschicht, die Wear Leveling, Refreshing und Remapping durchführt, werden Strategien auf Betriebssystemebene wie schreibgeschützte Dateisysteme nicht mehr unbedingt gelesen nur auf Hardwareebene, Partitionsgrenzen sind keine tatsächlichen Grenzen usw.