Die einfache Antwort lautet: Ja, Sie benötigen genügend Flash-Blöcke, um Bootloader- und A / B-Code-Images zu unterstützen, wenn Sie eine hohe Zuverlässigkeit wünschen. Bevor Sie das neue Bild aktivieren, können Sie das Ganze schreiben, überprüfen und möglicherweise erneut versuchen.
Dies ist jedoch eine teure / zuverlässige Strategie, und Sie können den Overhead reduzieren. Low-Level-Unterstützung für OTA-Updates kann auch Teil der Gerätefirmware oder des Betriebssystems sein, sodass Sie vermeiden können, Ihre eigenen zu aktualisieren, es sei denn, Sie möchten etwas lernen. Diese Funktion kann als beschrieben werden FOTA
.
Das Partitionieren Ihrer Codebasis ermöglicht inkrementelle Updates. Im besten Fall kann der Bootloader die Netzwerkverbindung herstellen, Code herunterladen und überprüfen, ohne dass ein Fallback-Benutzercode erforderlich ist. Mit einem lokalen Gateway kann die Verwaltung dieser Aufgabe von den kostengünstigen Endpunkten delegiert werden.
Viele Geräte haben eine kleine Menge von Wort-Lösch - Blitz, und falls dies nicht selbst kann man in der Regel eingestellt Bits ohne einen ganzen Block löschen zu müssen. Diese Funktionen können verwendet werden, um Sprungtabellen zu manipulieren und Code zusammenzufügen, der in Blockgrößenblöcken aktualisiert wird. Selbst wenn Sie ursprünglich einen vollständigen A / B-Codebereich geplant hatten, müssen Sie möglicherweise auf ein komplexeres Schema zurückgreifen, wenn die Codebasis zu stark wächst.
Um die Funktionalität zu verdeutlichen, die mit einer ausgeklügelten Firmware-Over-the-Air-Lösung erreicht werden kann, können der Bootloader und möglicherweise ein primärer Kommunikationsstapel resident bleiben, während der gesamte verbleibende Benutzeranwendungsbereich erneut geflasht wird. Dies erfordert keinen Overhead (insbesondere wenn die Blockpartitionierung weich ist). In dem Szenario, in dem der Kommunikationsstapel aktualisiert werden muss, kann die Region, die im Allgemeinen für den Anwendungscode verwendet wird, vorübergehend während des Herunterladens und der Überprüfung verwendet werden. Um dies zu erreichen, ist eine gewisse Unterstützung im SoC erforderlich, es gibt jedoch bereits Geräte der 2. und 3. Generation, die für diesen Zweck entwickelt wurden.