Suchen

Live-Over-the-Air-Updates von Firmware in Flash-Speichern

| Autor / Redakteur: Jackson Huang * / Michael Eckstein

Firmware-Updates von Industrie- und Automobilsystemen sollten im Betrieb möglich sein. Welche Speicherarchitektur bietet dafür die beste Kombination aus Kosten, Zuverlässigkeit und Performance?

Firmen zum Thema

Bild 1: Bei DRAM-basierten Firmware-Updates, etwa auf einer Set-Top-Box, darf das Gerät auf keinen Fall vom Netz getrennt werden.
Bild 1: Bei DRAM-basierten Firmware-Updates, etwa auf einer Set-Top-Box, darf das Gerät auf keinen Fall vom Netz getrennt werden.
(Bild: Hyderabaduser, Creative Commons)

Over-the-Air-(OTA-)Updates sind per IP (Internet Protocol) über Funk oder Kabel übertragene Firmware-Aktualisierungen. Besonders bei Systemen, die im Industrie- oder Automobilsektor arbeiten, müssen diese Updates zuverlässig und mit minimalen (geplanten oder ungeplanten) Stillstandszeiten durchgeführt werden können. Zunehmender Kostendruck und geforderte kurze Markteinführungszeiten verlangen jedoch danach, eine OTA-Fähigkeit einfach und schnell implementieren zu können.

Voraussetzung dafür ist, ein existierendes Design möglichst wenig ändern zu müssen. Kosten, Designkomplexität und Leistungsfähigkeit der OTA-Funktion hängen davon ab, wie der Flash-Speicher für diese Aufgabe implementiert wird. Jede der verschiedenen Methoden hat spezifische Vor- und Nachteile. Der folgende Artikel beschreibt einige dieser Designtechniken und zeigt, welche Vorzüge der SpiStack-Speicher von Winbond beim Implementieren der OTA-Funktion in bestehenden Hardwaredesigns bietet.

Bildergalerie

Verwendung existierender Flash-Speicher für OTA-Zwecke

Ein typisches Embedded-System für das IoT besteht aus einem Chipsatz, der auf DRAM-Speicher und externes, nichtflüchtiges NOR-Flash zum Speichern des Codes zugreifen kann. Nach dem Hochfahren des Systems wird in einem als „Code Shadowing“ bezeichneten Prozess der Inhalt des Flash-Speichers dekomprimiert und in den DRAM-Speicher geladen, von wo ihn der Chipsatz verarbeitet. Die OTA-Funktionalität lässt sich in einigen Fällen ohne Ändern der Hardwarekonfiguration nachrüsten.

Bei einer solchen Systemarchitektur können OTA-Updates möglicherweise durchgeführt werden, indem der reguläre Betrieb kurzzeitig angehalten wird, um die neue Firmware in den DRAM-Speicher herunterzuladen, zu authentisieren und anschließend sektor- oder blockweise mit einer Reihe von Lösch- und Programmieroperationen an das NOR-Flash zu übertragen. Diese OTA-Methode kommt zum Beispiel bei nächtlichen System-Updates von Set-Top-Boxen zum Einsatz. Man geht dabei davon aus, dass die kurzzeitige Nichtverfügbarkeit des Geräts zu dieser Zeit für die Zuschauer hinnehmbar ist.

Zusätzlich wird eine Warnung ausgegeben, dass das Gerät während dieser Zeit nicht vom Netz getrennt werden darf. Bei Industrie- und Automotive-Applikationen oder missionskritischen Anlagen scheidet diese Methode aus zwei Gründen aus. Erstens ist es oftmals teuer, unzweckmäßig oder inakzeptabel, den Betrieb für eine Routinewartung zu unterbrechen. Zweitens geht mit dieser Methode ein nicht hinnehmbares Ausfallrisiko einher, denn bei einem unerwarteten Stromausfall während des Updateprozesses ist das im DRAM gespeicherte neue Firmware-Image umgehend verloren.

Das vorige Firmware-Image ist möglicherweise bereits zum Teil aus dem Flash-Speicher gelöscht worden, während das neue Image erst unvollständig geladen ist. Das System könnte also eine unvollständige Firmware oder Teile zweier verschiedener Firmware-Images im Flash-Speicher enthalten, sodass es beim nächsten Hochfahren bestenfalls fehlerhaft arbeitet. Wahrscheinlicher ist aber, dass das Hochfahren komplett fehlschlägt und das Gerät damit unbenutzbar ist. Ein solches Ausfallrisiko ist bei industriellen Anlagen oder Fahrzeugen inakzeptabel. Diese Anwendungen verlangen deshalb nach einer Updatemethode, bei der die vorhandene Firmware so lange erhalten bleibt, bis die neue erfolgreich heruntergeladen und abgespeichert ist.

OTA mit erweitertem Flash-Speicher

Eine unkomplizierte Methode zum Speichern einer neuen Firmwareversion, bevor das aktuelle Image gelöscht wird, ist das Aufstocken der verfügbaren Flash-Kapazität. Etwa das Verdoppeln des verfügbaren Flash-Speichers, damit die vorhandene und die neue Version gleichzeitig im Gerät ablegen lassen. Ein Adressoffset-Mechanismus, der vom Host-Chipsatz oder softwaremäßig unterstützt wird, entscheidet darüber, welches der beiden Code-Images aktiv ist. Es geht also darum, den Programmzähler zu verändern, damit er für die Ausführung auf eine der beiden Firmwareversionen verweist. Wurde ein neues Firmware-Image erfolgreich aktualisiert, was bei Flash-Speichern mit Lösch- und Programmieroperationen einhergeht, wird der Adressoffset so verändert, dass die anschließende Codeverarbeitung an das neue Firmware-Image gerichtet wird. Derjenige Teil des Flash-Speichers, der vom alten Image belegt ist, steht danach für künftige Updates zur Verfügung.

Diese Methode beseitigt das Risiko, dass das System nicht mehr hochfährt oder Funktionsfehler aufweist, wenn es während des Code-Updates zu einem Ausfall der Stromversorgung kommt. Da aber nur ein Flash-Speicher verwendet wird, der während des Updates nicht für Leseoperationen zur Verfügung steht, ist die ununterbrochene Verfügbarkeit des Systems dennoch nicht gewährleistet. Zur Verdeutlichung: Bei einem typischen NOR-Flash-Baustein mit einer Kapazität von 256 Mbit (32 MByte) kann das Löschen eines 64-KBit-Blocks im ungünstigsten Fall bis zu 2 Sekunden dauern – und es sind immerhin 512 solcher Blöcke vorhanden. Systemdesigner müssen deshalb möglicherweise einige hundert Sekunden für den Updateprozess reservieren, was für viele Anwendungen zu lang ist. Selbst Applikationen, die ihren Code aus dem DRAM heraus verarbeiten, müssen regelmäßig auf den Flash-Speicher zugreifen, sodass eine derart lange Nichtverfügbarkeit des Flash-Speichers auch hier nicht hinnehmbar ist.

Separater Flash-Speicher für OTA-Firmware

Die Fähigkeit zur Durchführung von Updates, während der Flash-Speicher weiter für Leseoperationen verfügbar ist, verlangt nach einem separaten Speicherbaustein für die neue Firmwareversion parallel zur bestehenden Firmware. Eine naheliegende Möglichkeit ist daher das Duplizieren des zur Codespeicherung verwendeten Haupt-Flash-Speichers. Der primäre Flash-Speicher wird also durch einen redundanten Flash-Baustein ergänzt, der solange inaktiv bleibt, bis im Zuge eines OTA-Updates ein neues Image abgespeichert werden muss.

Nach erfolgreicher Programmierung des neuen Image wird der redundante Flash-Baustein zum neuen primären Flash-Speicher deklariert, während der bisherige primäre Flash-Speicher zum redundanten Baustein und damit inaktiv wird. Diese Methode ist zwar sicher und zuverlässig und birgt kein Risiko für einen Systemausfall, bringt aber höhere Materialkosten mit sich und benötigt mehr Leiterplattenfläche sowie ein neues Layout. Nicht zuletzt wird vom Chipsatz ein zusätzliches Signal zur Steuerung des redundanten Flash-Speichers benötigt. Die Designer stehen jedoch unter ständigem Kostendruck, und es gibt andere Konzepte, die zu niedrigeren Kosten und mit weniger Komplexität mit den gleichen Vorteilen aufwarten können.

Wie bereits erwähnt, enthält ein Embedded-System, das nach OTA-Fähigkeit verlangt, in der Regel einen externen NOR-Flash-Baustein zum Abspeichern des Codes. Eine Lösung des Problems ist das Partitionieren des NOR-Flash, wobei eine Bank an Speicherblöcken Programmier- und Löschoperationen unterstützt, während die andere Bank Lesezugriffe ermöglicht – beides auf einem Chip. Bausteine mit einer solchen Architektur werden üblicherweise als „Read While Write Flash“ bezeichnet. Es handelt sich bei ihnen im Prinzip um zwei auf einem Chip und in einem Gehäuse untergebrachte Speicherbausteine. Grundlegende Eigenschaften der Flash-Technologie sprechen allerdings gegen eine solche Kombination. Programmier- und Löschoperationen gehen nämlich mit hohen Spannungen und Strömen einher und können Störungen erzeugen.

Störungen führen zu Performance-Einbußen

Um zur gleichen Zeit Lesezugriffe durchzuführen, ohne die Daten zu verfälschen, benötigt der Chip aufwändige interne Isolationsmaßnahmen. In der Praxis aber führen Störungen unweigerlich zu Performance-Einbußen und erfordern ein Absenken der Betriebsfrequenz. Nicht zuletzt verlangt eine solche Architektur, dass interne Datenpfade und Latches doppelt vorhanden sind, um den gleichzeitigen Betrieb zu ermöglichen. Diese zusätzlichen Schaltungen aber belegen wertvolle Chipfläche und treiben die Kosten des Produkts in die Höhe. In Ungnade gefallen sind Read While Write Flash-Bausteine jedoch auch durch die Verwendung einer weniger gebräuchlichen Busschnittstelle, die Änderungen am Leiterplatten-Layout erfordert. Hinzu kommt, dass nur sehr wenige Chipsätze eine solche spezielle Busschnittstelle unterstützen, was die Auswahl für die Systemdesigner einengt.

Während also die Verwendung von Read While Write Flash-Speichern das Ablegen zweier Code-Images unterstützt und Lesezugriffe auf ein Image ermöglicht, während das andere aktualisiert wird, stehen diesen Vorteilen höhere Kosten, die Notwendigkeit von Designänderungen und ein eingeschränktes Chipsatz-Angebot entgegen. Angesichts der Probleme, die sich bei OTA-Implementierungen mit einem einzigen Flash-Baustein, zwei Flash-Speichern oder Read While Write Flash ergeben, hat Winbond die „SpiStack“-Technik entwickelt: Sie vereint zwei identische Flash-Chips in einem Gehäuse, kommt aber mit einem einzigen Chip-Enable-Signal (/CS) aus.

„SpiStack“-Stacked-Die- Speicher für OTA-Anwendungen

Aus Sicht der Hardware stellt sich der Baustein somit wie ein einziger Flash-Speicher dar. Die Auswahl eines der beiden Chips wird von der Systemsoftware vorgenommen. Mit dieser Architektur kann einer der beiden Chips für Programmier- und Löschoperationen verwendet werden, während mit dem anderen gleichzeitig Lesezugriffe ausgeführt werden können. Da die Speicherkapazität mit zwei separaten Chips bereitgestellt wird, kommt es zu keinen Störproblemen, und der gleichzeitige Betrieb ist auch bei hoher Geschwindigkeit möglich. Diese Art von Stacked-Die-Lösungen wurde bereits von mehreren Flash-Herstellern angeboten.

Das Stapeln von Flash-Chips hat den Vorteil, dass in einem Gehäuse größere Speicherkapazitäten verfügbar gemacht werden können als mit Single-Die-Bausteinen. In einem System, das einen Single-Die NOR-Flash-Baustein mit 256 MBit in einem 8 mm x 6 mm großen WSON-Gehäuse enthält, kann der Speicher beispielsweise durch einen SpiStack™-Baustein mit 512 MBit und gleichem Gehäuse ersetzt werden. Der Zwei-Chip-Baustein unterstützt jedoch den Read-While-Write-Betrieb für OTA-Updates, ohne dass die Lesezugriffe angehalten werden müssen, und ohne das Risiko des Verlusts des bestehenden Firmware-Image, sollte die Stromversorgung unerwartet ausfallen. Hiermit werden die wichtigen Anforderungen von Industrie- und Automotive-Systemen erfüllt, aber es stellt sich die Frage, wie die beiden Chips vom Host-Chipsatz gesteuert werden.

Stacked-Die-Lösung erfordert zusätzlichen Chip-Select-Pin

Muss vom Chipsatz für jeden der beiden Chips ein Chip-Select-Signal (/CS) bereitgestellt werden, benötigt der Flash-Baustein einen zusätzlichen Pin. Anstelle eines 8-Pin-Gehäuses wird deshalb ein Gehäuse mit mehr Pins benötigt. Dies wiederum macht ein Redesign der Leiterplatte erforderlich, und bei einigen Systemen ist außerdem am Chipsatz kein freier Pin verfügbar, um das /CS-Signal für den zweiten Chip zu erzeugen. Die Stacked-Die-Lösung erscheint somit zwar zunächst attraktiv, erfordert aber einen zusätzlichen /CS-Anschluss, der bestenfalls nur auf umständliche Weise, schlimmstenfalls aber gar nicht in das Systemdesign integrierbar ist.

Um dieses Problem abzuwenden, entwickelte Winbond die in seinen „SpiStack“-Produkten implementierte softwaremäßige Chip-Select-Technik mithilfe eines besonderen C2h-Befehls. Dieser Softwarebefehl richtet die Chip-Select-Funktion auf der Basis einer 8-Bit-Chipkennung an den anderen Chip. Beide Chips sind über dieselben Pins mit dem Host-Chipsatz verbunden. Folglich wird kein zusätzlicher Pin benötigt, und ein Redesign des Leiterplatte zum Nachrüsten der OTA-Updatefähigkeit ist ebenso wenig erforderlich wie die Belegung eines zusätzlichen /CS-Pins. Stattdessen verwendet das Betriebssystem eine globale Variable und einen Bereich im Flash-Speicher, um zu verfolgen, welcher Chip gerade aktiv ist.

Winbond hat seine Produkte W25M512JVxxx und W25M512JW mit der „SpiStack“-Technik ausgestattet. Auf Anfrage sind aber auch weitere Kombinationen für NOR- und NAND-Flash in Industriestandard-Gehäusen und Anschlussbelegungen erhältlich, etwa WSON8 und BGA24.

* * Jackson Huang ... ist Senior Director of Marketing von Winbond Electronics America

(ID:46595365)