Alle eingebetteten Geräte enthalten eine Option zum Zurücksetzen auf die Werkseinstellungen, mit der der Benutzer sein Gerät zurücksetzen kann, wenn etwas nicht stimmt.
Ich entwickle eine Firmware auf einer STM32-Karte. Die Firmware enthält einen Bootloader, mit dem die Anwendung über UART aktualisiert werden kann (durch Senden einer Binärdatei, die das neue Image enthält), und ich möchte eine weitere Funktion hinzufügen: Ein Zurücksetzen auf die Werkseinstellungen. Wenn der Benutzer diese Option wählt, lädt die Karte das Originalbild.
Was ist ein Werksreset? Geht es darum, die gesamte Binärdatei erneut in den Speicher zu laden, oder wird nur eine Funktion aufgerufen, die vom Endbenutzer geänderte Variablen neu initialisiert?
Was sind die besten Methoden, um dies zu tun?
Wo soll die Original-FW aufbewahrt werden? ist es in einem internen oder externen Blitz?
Wenn Sie das häufigste Beispiel für werkseitige Standardeinstellungen heranziehen, handelt es sich um das UEFI (BIOS) Ihres PCs.
Es besteht aus einem Flash-Chip und einem SRAM-Speicherchip für flüchtige Batterien. Der Flash-Chip enthält das Programm und der SRAM enthält die Einstellungen.
Beim Zurücksetzen auf die Werkseinstellungen wird der Inhalt des flüchtigen Speichers gelöscht. Beim nächsten Start wird festgestellt, dass die Prüfsumme der Einstellungen ungültig ist, und die im Programm enthaltenen Standardeinstellungen werden wiederhergestellt.
Dies ist nicht nur auf das SRAM für die Batterieunterstützung beschränkt, sondern kann auch mit FLASH oder EEPROM durchgeführt werden. Das Backup-SRAM der Batterie kann jedoch gelöscht werden, ohne dass die Maschine eingeschaltet werden muss.
Ein anderer Begriff ist Factory Recovery . Dies bedeutet einfach, dass das Hauptprogramm zweimal enthalten ist. Es kann jedoch nur eine Kopie vom Benutzer aktualisiert werden.
Dual-BIOS ist ein Beispiel dafür.
Auf übergeordneten Systemen wie Telefonen und Computern bedeutet dies, dass die Installationsdateien verwendet werden, um das Betriebssystem auf die werkseitigen Bedingungen zurückzusetzen.
quelle
Der Werksreset ist das, was Sie wollen. Dies hängt von der Anwendung und dem Gerätetyp ab.
Normalerweise mache ich zwei Dinge:
Beides kann mit Tasten (langes Drücken, kurzes Drücken), DIP-Schaltern oder anderen Kommunikationsmitteln (z. B. UART, USB) erfolgen.
Wenn Sie beispielsweise ein GPIO für eine einzelne Schaltfläche verwenden, können Sie dies folgendermaßen tun:
quelle
Wie Sie sagten, lädt der Factory-Reset das ursprüngliche Factory-Image auf das Gerät zurück. Dies kann bei einer Fehlkonfiguration erforderlich sein, bei der der Benutzer einfach nicht wusste, was er tut, oder einfach nur zur ursprünglichen Konfiguration zurückkehren möchte. In Fällen wie denen, in denen Sie ein Software-Update durchgeführt haben, möchten Sie möglicherweise bestimmte Fehlerszenarien während des Updates behandeln. In diesem Fall verfügen Sie möglicherweise sogar über einen dedizierten Flash-Speicher, in dem das ursprüngliche Werksimage gespeichert ist und der mit einem Jumper ausgewählt werden kann, um die werkseitige Standardkonfiguration wiederherzustellen. Dies geschieht z. B. auf Computer-Mainboards, auf denen Sie die ursprüngliche BIOS-Konfiguration wiederherstellen können, falls ein Update fehlschlagen und das Hauptimage beschädigen würde.
quelle