Freigeben über


Spezifikation des Komponenten-Firmware-Updates (CFU)

Diese Spezifikation beschreibt ein generisches HID-Protokoll zum Aktualisieren der Firmware für Komponenten, die auf einem PC oder Zubehör vorhanden sind. Die Spezifikation ermöglicht es einer Komponente, Firmware zu akzeptieren, ohne den Gerätevorgang während eines Downloads zu unterbrechen. Die Spezifikation unterstützt Konfigurationen, bei denen die Komponente, die die Firmware akzeptiert, möglicherweise Unterkomponenten aufweist, die separate Firmwareimages erfordern. Mit der Spezifikation kann die für die Komponente verantwortliche Person entscheiden, ob die Firmware akzeptiert wird. Sie fungiert auch als Optimierung, da das Firmwareimage nur an die Komponente gesendet wird, wenn es in der Lage oder bereit ist, es anzunehmen.

Hinweis

CFU ist in Windows 10, Version 2004 (Windows 10 Mai 2020 Update) und höheren Versionen verfügbar.

Inhalt

Tabellen

Tabelle 5.1-1 GET_FIRMWARE_VERSION Antwortlayout

Tabelle 5.1-2 GET_FIRMWARE_VERSION Antwort – Kopfzeilenlayout

Tabelle 5.1-3 GET_FIRMWARE_VERSION Antwortnachricht – Header-Bits

Tabelle 5.1-4 GET_FIRMWARE_VERSION Antwort – Komponentenversions- und Eigenschaftenlayout

Tabelle 5.1-5 GET_FIRMWARE_VERSION Antwort – Komponentenversion und Eigenschaften Bits

Tabelle 5.2-1 FIRMWARE_UPDATE_OFFER Befehlslayout

Tabelle 5.2-2 FIRMWARE_UPDATE_OFFER Befehl – Komponenten-Informationslayout

Tabelle 5.2-3 FIRMWARE_UPDATE_OFFER Befehl – Komponenten-Informationsbits

Tabelle 5.2-4 FIRMWARE_UPDATE_OFFER Befehl – Firmwareversionslayout

Tabelle 5.2-5 FIRMWARE_UPDATE_OFFER Befehl – Firmwareversionsbits

Tabelle 5.2-6 FIRMWARE_UPDATE_OFFER Befehl – Anbieterspezifisches Layout

Tabelle 5.2-7 FIRMWARE_UPDATE_OFFER Befehl – Sonstiges und Protokollversion

Tabelle 5.2-8 FIRMWARE_UPDATE_OFFER Antwort-Token-Layout

Tabelle 5.2-9 FIRMWARE_UPDATE_OFFER-Antwort – Token-Layout

Tabelle 5.2-10 FIRMWARE_UPDATE_OFFER Antwort – Tokenbits

Tabelle 5.2-11 FIRMWARE_UPDATE_OFFER Antwort – Ablehnungsgrundlayout

Tabelle 5.2-12 FIRMWARE_UPDATE_OFFER Antwort – Ablehnungsgrund-Bits

Tabelle 5.2-13 FIRMWARE_UPDATE_OFFER Antwort-RR-Codewerte

Tabelle 5.2-14 FIRMWARE_UPDATE_OFFER Antwortstatus-Layout

Tabelle 5.2-15 FIRMWARE_UPDATE_OFFER Antwort – Statusbits

Tabelle 5.2-16 FIRMWARE_UPDATE_OFFER Antwortstatuswerte

Tabelle 5.3-1 FIRMWARE_UPDATE_OFFER – Informationsbefehlslayout

Tabelle 5.3-2 FIRMWARE_UPDATE_OFFER – Informationsbefehl - Komponentenlayout

Tabelle 5.3-3 FIRMWARE_UPDATE_OFFER – Informationsbefehl – Komponentenbits

Tabelle 5.3-4 FIRMWARE_UPDATE_OFFER – Informationsbefehl – Werte des Informationscodes

Tabelle 5.3-5 FIRMWARE_UPDATE_OFFER – Layout der Informationsantwort

Tabelle 5.3-6 FIRMWARE_UPDATE_OFFER– Layout des Informationspaket-Antworttokens

Tabelle 5.3-7 FIRMWARE_UPDATE_OFFER – Informationsantwort – Tokenbits

Tabelle 5.3-8 FIRMWARE_UPDATE_OFFER – Informationsantwort – RR-Codelayout

Tabelle 5.3-9 FIRMWARE_UPDATE_OFFER – Angebotsinformationsantwort – RR-Codebits

Tabelle 5.3-10 FIRMWARE_UPDATE_OFFER– Informationsantwort – RR-Codewerte

Tabelle 5.3-11 FIRMWARE_UPDATE_OFFER – Angebotsinformationen Antwortstatus-Layout

Tabelle 5.3-12 FIRMWARE_UPDATE_OFFER – Angebotsinformationen – Antwortstatus-Bits

Tabelle 5.4-1 FIRMWARE_UPDATE_OFFER – Erweitertes Befehlslayout

Tabelle 5.4-2 FIRMWARE_UPDATE_OFFER - Erweitertes Befehlspaket - Befehl - Komponentenlayout

Tabelle 5.4-3 FIRMWARE_UPDATE_OFFER – Erweiterter Befehl – Komponentenbits

Tabelle 5.4-4 FIRMWARE_UPDATE_OFFER – Erweiterter Befehl – Befehlscodewerte

Tabelle 5.4-5 FIRMWARE_UPDATE_OFFER – Erweitertes Befehlspaketantwortlayout

Tabelle 5.4-6 FIRMWARE_UPDATE_OFFER – Antwort auf Befehlsdatenpaket – Tokenlayout

Tabelle 5.4-7 FIRMWARE_UPDATE_OFFER – Befehlsantwort-Angebot – Token-Bits

Tabelle 5.4-8 FIRMWARE_UPDATE_OFFER – Angebotsinformationspaket-Response-RR-Layout

Tabelle 5.4-9 FIRMWARE_UPDATE_OFFER – Angebotsbefehlsantwort – RR-Code

Tabelle 5.4-10 FIRMWARE_UPDATE_OFFER - Angebotsbefehlspaket - RR-Codewerte

Tabelle 5.4-11 FIRMWARE_UPDATE_OFFER - Layout des Befehls-Paketantwortstatus

Tabelle 5.4-12 FIRMWARE_UPDATE_OFFER: Befehlspaketantwort-RR-Code anbieten

Tabelle 5.5-1 Befehlslayout für FIRMWARE_UPDATE_CONTENT

Tabelle 5.5-2 FIRMWARE_UPDATE_CONTENT Befehlskopflayout

Tabelle 5.5-3 FIRMWARE_UPDATE_CONTENT Header-Bits

Tabelle 5.5-4 FIRMWARE_UPDATE_OFFER - Befehlsangebotspaket - Flagwerte

Tabelle 5.5-5 FIRMWARE_UPDATE_CONTENT Befehlsdatenlayout

Tabelle 5.5-6 FIRMWARE_UPDATE_CONTENT Datenbits des Befehls

Tabelle 5.5-7 FIRMWARE_UPDATE_CONTENT Befehls-Antwortlayout

Tabelle 5.5-8 FIRMWARE_UPDATE_CONTENT Antwort – Sequenznummer

Tabelle 5.5-9 FIRMWARE_UPDATE_CONTENT – Befehl – Antwortbits

Tabelle 5.5-10 FIRMWARE_UPDATE_CONTENT Layout des Antwortstatus

Tabelle 5.5-11 FIRMWARE_UPDATE_OFFER – Antwort – Statusbits

Tabelle 5.5-12 FIRMWARE_UPDATE_OFFER– Antwort – Statuscodewerte

1 Einführung

Die heutigen PCs und Zubehör verfügen über interne Komponenten, die komplexe Vorgänge ausführen. Um ein qualitativ hochwertiges Produkt sicherzustellen, muss das Verhalten dieser Geräte in späteren Entwicklungsphasen oder nach der Auslieferung an die Kunden häufig aktualisiert werden. Das Update kann identifizierte Funktions- oder Sicherheitsprobleme beheben oder neue Features hinzufügen. Ein großer Teil der komplexen Logik befindet sich in der Firmware, die auf dem Gerät ausgeführt wird, was aktualisierbar ist.

Diese Spezifikation beschreibt ein generisches HID-Protokoll zum Aktualisieren der Firmware für Komponenten, die auf einem PC oder zubehör vorhanden sind. DIE HID-Implementierung geht über den Umfang der Spezifikation hinaus.

Einige der Features des Protokolls sind:

  • Das Protokoll basiert auf HID – ubiquitous und verfügt über Windows-In-Box-Unterstützung über verschiedene Verbindungsbusse wie USB und I2C. Daher kann die gleiche Softwarelösung (Treiber) verwendet werden, um die Firmware für alle Komponenten zu aktualisieren.

    Hinweis

    Da die Spezifikation paketbasiert ist, ist es einfach, sie an Nicht-HID-Szenarien anzupassen.

  • Die Spezifikation ermöglicht es einer Komponente, Firmware zu akzeptieren, ohne den Gerätevorgang während des Downloads zu unterbrechen. Dies ermöglicht eine bessere Benutzererfahrung, da sie nicht warten müssen, bis der Firmwareupdatevorgang abgeschlossen ist, bevor sie andere Aufgaben fortsetzen können. Die neue Firmware kann in einem einzelnen atombasierten Vorgang gleichzeitig aufgerufen werden, der minimale Auswirkungen auf den Benutzer hat.

  • Die Spezifikation unterstützt Konfigurationen, bei denen die Komponente, die die Firmware akzeptiert, möglicherweise Unterkomponenten aufweist, die separate Firmwareimages erfordern.

    Hinweis

    Der Prozess einer Komponente, die die Firmware an die Unterkomponente übergibt, liegt außerhalb des Umfangs dieser Spezifikation.

  • Die Spezifikation unterstützt das Konzept eines Angebots und basiert auf der verantwortlichen Komponente, um zu entscheiden, ob die Firmware akzeptiert werden soll. Die Entscheidung, neue Firmware anzunehmen, ist nicht trivial. Es kann Abhängigkeiten zwischen dem Firmwaretyp und/oder der version und dem zugrunde liegenden Typ/der zugrunde liegenden Hardware geben, für den die neue Firmware gilt. Ein Angebot fungiert auch als Optimierungsmechanismus, da das Firmwareimage nur dann an die Komponente gesendet wird, wenn es /bereit ist, es anzunehmen.

1.1 Glossar

Begriff BESCHREIBUNG
Komponenten-ID In einem Gerät mit mehreren Komponenten identifiziert eine Komponenten-ID jede Komponente eindeutig.
CRC Zyklische Redundanzüberprüfung

Ein nicht kryptografischer Hashingalgorithmus, der verwendet wird, um einen Digest oder Fingerabdruck eines Datenblocks zu erzeugen. Das CRC wird als Überprüfung verwendet, um sicherzustellen, dass sich der Datenblock seit der Berechnung des CRC nicht geändert hat. CRC ist nicht unfehlbar, bietet jedoch Vertrauen, dass die Daten korrekt empfangen wurden.
Gerät Eine Sammlung von Komponenten (eine primäre Komponente und null oder mehr Unterkomponenten). Das Gerät ist für das Betriebssystem als einzelne Einheit sichtbar. Der Host interagiert mit dem Gerät, was in der Regel die primäre Komponente ist.

Ein Computer verfügt möglicherweise über mehrere Geräte. In Bezug auf diese Spezifikation sind die Kommunikationen mit 2 verschiedenen Geräten völlig unabhängig.
Fahrer Ein Treiber, der mithilfe des WDF-Frameworks (Windows Driver Foundation) geschrieben wird.
Firmware Der Code, der auf der physischen Hardware ausgeführt wird. Firmware ist aktualisierbar und befindet sich in der Regel im programmierbaren Arbeitsspeicher, der der Hardware zugeordnet ist.
Gerätetechnik Ein physisches Siliziumstück auf dem Computer.
Primäre Komponente Eine Hardware auf einem Computer und die Firmware dafür. Im Kontext dieser Spezifikation ist eine Komponente die Entität, die das Firmwareupdate benötigt und akzeptiert.
Segment Ein Firmwareimage für eine Komponente kann in kleinere Segmente unterteilt werden. Jedes Segment ist ein kleines Firmwareimage.
Segment-ID Wenn eine Firmware einer Komponente in kleinere Segmente unterteilt ist, ist die Segment-ID der eindeutige Bezeichner für das Segment.
Unterschrift Eine kryptografische Mittel, um festzustellen, ob das Firmwareimage durch nicht autorisierte Mittel geändert wurde. Signaturen sind optional, aber empfohlen und liegen außerhalb des Umfangs dieser Spezifikation.
Unterkomponente Je nach Hardwarearchitektur sind nicht alle Komponenten für das Betriebssystem sichtbar, da sie möglicherweise nachgeschaltet einer Komponente verbunden sind, die für das System sichtbar ist. Diese Komponenten werden in dieser Spezifikation als Unterkomponenten bezeichnet.
TLC HID-Top-Level-Sammlung.
Token Ein Bezeichner für eine Hostsitzung. Ein Host erstellt ein Token und sendet es in Befehlen, und das Gerät gibt es in der Antwort zurück. Token können verwendet werden, um bestimmte Transaktionen zu serialisieren oder zu identifizieren, dass eine Sitzung verloren gegangen ist und ein anderer gestartet wurde.

1.2 Umfang

1.2.1 Ziele

  • Eine Lösung, die unabhängig von der Busspezifikation ist, ist erforderlich, um zu vermeiden, dass für jeden Bustyp ein neues Protokoll erforderlich wird. HID ist allgegenwärtig und behebt diese Anforderung.

  • Die Möglichkeit zum Unterstützen des Firmwareupdates für ein Mehrkomponentengerät, bei dem eine Komponente als primäre Komponente fungiert und andere Unterkomponenten mit der primären Komponente verbunden sind. Jede Komponente erfordert eine eigene Firmware mit nicht trivialen Abhängigkeiten miteinander.

  • Ein gängiges Treibermodell zum Herunterladen des Firmwareimages in die Komponente. Die Komponente verfügt dann über unterkomponnente spezifische Algorithmen für die Weiterleitung an die Unterkomponenten. Die Unterkomponenten können auch Gültigkeitsprüfungen für ihre Firmware durchführen und die Ergebnisse an die primäre Komponente übergeben.

  • Die Möglichkeit, firmwareupdates zu unterstützen, während der Gerätevorgang ausgeführt wird.

  • Die Möglichkeit, die Firmware auf Produktionsgeräten über autorisierte Tools zu aktualisieren/zurückzugeben und Marktgeräte über Windows Update zu aktualisieren.

  • Die Flexibilität, Firmware in der Entwicklung sowie Markt-Firmware zu unterstützen.

  • Die Möglichkeit, ein großes Firmwareimage in kleinere Segmente zu segmentieren, damit die Komponente das Firmwareimage leichter akzeptiert.

1.2.2 Nichtziele

  • Definieren Sie das interne Format des Firmwareimages: Für den Host ist das Firmwareimage eine Reihe von Adress- und Nutzlasteinträgen.

  • Signieren/verschlüsseln/überprüfen Sie die akzeptierte Firmware: Diese Spezifikation beschreibt nicht, wie die Firmwareimages signiert und verschlüsselt werden. Es ist erforderlich, dass die erwartete aktuelle Firmware, die auf der Komponente ausgeführt wird, die Firmware überprüft, die heruntergeladen wird.

  • Definieren Sie einen Mechanismus zur Interaktion der Komponente mit den Unterkomponenten: Der Host interagiert mit dem Gerät als einzelne Einheit, in der Regel die primäre Komponente. Die Komponente muss als Brücke für die Kommunikation im Zusammenhang mit der Unterkomponentenfirmware fungieren.

2 Unterstützte Hardwarearchitektur

Um ein flexibles Hardwaredesign zu unterstützen, unterstützt das Protokoll ein Mehrkomponentengerät, auf dem jede Komponente ein eigenes Firmwareimage benötigt. Im Entwurf ist eine Komponente die primäre Komponente, und die abhängigen Unterkomponenten sind mit dieser primären Komponente verbunden. Jede Komponente wird durch eine Komponenten-ID eindeutig beschrieben.

Das Mehrkomponentengerät ist für das Betriebssystem als Einheit sichtbar. Der Host interagiert nur mit dem Gerät, in der Regel die primäre Komponente, die dieses CFU-Protokoll verwendet. Die Kommunikation zwischen der Komponente und ihren Unterkomponenten liegt außerhalb des Umfangs dieser Spezifikation.

Auf einem PC gibt es möglicherweise viele verschiedene Geräte (bei denen ein Gerät möglicherweise über eine oder mehrere Komponenten verfügt). Im Rahmen dieses Protokolls ist die Kommunikation mit jedem Gerät unabhängig. Jedes Gerät verfügt über eine entsprechende Instanz des Hosts.

Gerätefirmware, primäre Komponente und die zugehörigen Unterkomponenten.

3 Protokollvoraussetzungen

In diesem Abschnitt werden die bewährten Methoden und Voraussetzungen aufgeführt, die implementiert werden müssen, um dieses Protokoll zu nutzen:

  • Verwendung von Atombildern

    Ein Firmwareimage für eine Komponente wird erst verwendet, wenn das gesamte Firmwareimage erfolgreich heruntergeladen wurde. Falls die Firmware in mehrere Segmente aufgeteilt ist, darf das Bild erst verwendet werden, wenn das endgültige Segment vom Absender empfangen wird. Integritätsprüfungen müssen für das endgültige Abbild durchgeführt werden. Es wird empfohlen, dass der Transport, der zum Bereitstellen des Firmwareimages verwendet wird, Fehlerkorrektur- und Wiederholungsmechanismen enthält, um einen wiederholten Download bei Transportfehlern zu vermeiden.

  • Das Firmwareupdate darf den Gerätebetrieb nicht unterbrechen.

    Das Gerät, das das Firmwareimage akzeptiert, muss während des Updates ausgeführt werden können. Das Gerät muss zusätzlichen Arbeitsspeicher haben, um die eingehende Firmware zu speichern und zu überprüfen, während die aktuelle Firmware nicht überschrieben wird.

  • Authentifizierung und Integrität

    Der Implementierer entscheidet, welche Faktoren ein authentisches Firmwareimage darstellen. Es wird empfohlen, dass die aktuelle Firmware der Komponente mindestens das CRC des eingehenden Firmwareimages überprüfen muss. Die aktuelle Firmware sollte auch digitale Signaturen oder andere Fehlererkennungsalgorithmen verwenden. Wenn die Überprüfung fehlschlägt, lehnt die Firmware das Update ab. Fehlerwiederherstellung

    Wenn das Firmwareimage heruntergeladen und nicht erfolgreich ist, darf das Gerät die neue Firmware nicht aufrufen und weiterhin mit der vorhandenen Firmware arbeiten. Der Host kann das Update wiederholen. Die Häufigkeit der Wiederholungsversuche ist implementierungsspezifisch.

  • Vertraulichkeit

    Wahlfrei. Ein Firmwaresegment kann verschlüsselt werden. Die Verschlüsselungs- und Entschlüsselungstechniken liegen außerhalb des Umfangs dieser Spezifikation. Diese Spezifikation behandelt die Firmwarenutzlast als Datenstrom, unabhängig davon, ob sie verschlüsselt ist.

  • Rollbackschutz

    Rollbackrichtlinien werden von der primären Komponente erzwungen und sind implementierungsspezifisch. Die aktuelle Firmware der Komponente überprüft eingehende Firmwareimages anhand interner Richtlinien, wie zum Beispiel, dass die Versionsnummer neuer sein muss oder der Versionstyp nicht von einer finalen Version zu einer Debug-Version gewechselt werden kann, und so weiter. Das Protokoll erlaubt es der Nachrichtenübermittlung anzugeben, dass ein Update akzeptiert wird, selbst wenn es gegen die Rollback-Richtlinien verstößt.

4 Übersicht über das CFU-Protokoll

Das CFU-Protokoll ist eine Reihe von Befehlen und Antworten, die erforderlich sind, um die neuen Firmwareimages vom Host an das Gerät zu senden, für das die Firmware vorgesehen ist.

Auf hoher Ebene durchläuft das Protokoll alle Firmwareimages, die an das Gerät gesendet werden sollen. Für jedes Firmwareimage bietet der Host an, die Datei an das Gerät zu senden. Nur wenn das Gerät das Angebot akzeptiert, sendet der Host die Datei.

Um Fälle zu unterstützen, in denen eine Geräteaktualisierungsreihenfolge Abhängigkeiten hat, akzeptiert das Gerät möglicherweise bestimmte Angebote im ersten Durchgang nicht, daher ermöglicht es dem Host, alle Firmwareangebote an das Gerät erneut zu senden, bis alle Abhängigkeiten aufgelöst werden.

4.1 Firmware-Update-Programmierungsbefehlssequenz

Hier sehen Sie die CFU-Befehlssequenz zum Aktualisieren des Firmwareimages.

Firmware-Update Befehlsequenz zur Programmierung.

4.1.1 Status: Initialisierte Hostbenachrichtigung

Nachdem der Host sich selbst initialisiert und eine Reihe von Angeboten identifiziert hat, die er an das Gerät senden muss, gibt der Host einen OFFER_INFO_START_ENTIRE_TRANSACTION-Befehl aus, um anzugeben, dass der Host jetzt initialisiert ist. Der Zweck dieses Befehls besteht darin, die aktuelle Gerätefirmware zu benachrichtigen, dass eine neue Instanz des Hosts verfügbar ist. Diese Benachrichtigung ist nützlich, wenn eine vorherige Instanz des Hosts unerwartet beendet wird. Das Gerät muss diesen Befehl erfolgreich abschließen.

4.1.2 Zustand: OFFER_INFO_START_OFFER_LIST Benachrichtigung

In diesem Zustand gibt host den befehl OFFER_INFO_START_OFFER_LIST aus, um anzugeben, dass es bereit ist, die Angebote an die aktuelle Gerätefirmware zu senden. Die primäre Komponente des Geräts muss diesen Befehl erfolgreich abschließen.

Dieser Befehl ist nützlich, da der Host möglicherweise alle Angebote mehrmals an das Gerät sendet.

4.1.3 Status: Befehl "FIRMWARE_UPDATE_OFFER senden"

Der Host sendet ein Angebot an die primäre Komponente (oder deren Unterkomponente), um zu überprüfen, ob die Komponente die Firmware annehmen/ablehnen möchte. Das Angebot enthält alle erforderlichen Metadaten zum Firmwareimage, damit die aktuelle Firmware der Komponente entscheiden kann, ob das Angebot angenommen, pendiert, übersprungen oder abgelehnt werden soll.

Das Angebot kann für die primäre Komponente oder den Unterkomponenten gelten. Wenn die Komponente das Angebot annehmen kann, bereitet sie sich auf den Empfang der Firmware vor. Dies kann die Vorbereitung einer Speicherbank für den Empfang des eingehenden Firmwareimages umfassen. Die Komponente akzeptiert das Angebot möglicherweise nicht, beispielsweise verfügt die Komponente bereits über eine neuere (oder dieselbe) Firmwareversion, die der Host senden möchte. Weitere Gründe finden Sie in den in Anhang 1 beschriebenen Beispielen: Beispiel für die Firmwareupdateprogrammierungsbefehlssequenz.

Auch wenn ein Angebot akzeptiert wird, kann die primäre Komponente das Firmwareimage nach dem Download auf Integritätsfehler und/oder Rollbackprüfungen auf das empfangene tatsächliche Image weiterhin ablehnen. Die Komponente muss jede Firmware-Image-Eigenschaft unabhängig von Informationen im Angebot überprüfen.

Der Host gibt den Befehl FIRMWARE_UPDATE_OFFER aus, um die primäre Komponente über das Firmwareimage zu benachrichtigen, das der Host senden möchte.

Wenn die Komponente das Angebot akzeptiert, erhält sie FIRMWARE_UPDATE_OFFER_ACCEPT Status und akzeptiert damit das Angebot.

Wenn die Gerätefirmware ausgelastet ist und die primäre Komponente dieses oder das nächste Angebot derzeit nicht akzeptieren kann, sendet sie eine Beschäftigt-Antwort mit FIRMWARE_UPDATE_OFFER_BUSY Status.

Wenn die aktuelle Firmware an dem Angebot interessiert ist, das Angebot jedoch nicht annehmen kann (z. B. aufgrund einer Abhängigkeit von einem fehlenden Update für Unterkomponenten), antwortet sie mit einem FIRMWARE_UPDATE_OFFER_SKIP, der angibt, dass es an dieser Firmware interessiert ist, kann es jedoch nicht annehmen. Der Host fährt dann mit dem nächsten Angebot fort und muss diese Firmware später erneut anbieten.

Wenn die aktuelle Firmware nicht an dem Angebot interessiert ist (z. B. eine ältere Version), antwortet sie mit einem FIRMWARE_UPDATE_OFFER_REJECT Status, der den entsprechenden Ablehnungsgrund angibt. Dieser Status gibt nicht an, dass der Host dieses Angebot in Zukunft nicht erneut senden kann. Der Host sendet jedes Angebot in der Regel jedes Mal, wenn es die Liste der Angebote an das Gerät initialisiert oder erneut sendet (siehe Status: OFFER_INFO_START_OFFER_LIST Benachrichtigung).

4.1.4 Status: Firmware senden

In diesem Zustand beginnt der Host, das Firmwareimage an die primäre Komponente zu senden, für die die Komponente das Angebot zuvor akzeptiert hat.

Da der Inhalt des Firmwareimages wahrscheinlich die Nutzlastgrenzwerte eines einzelnen Befehls übergehen wird, bricht der Host die Firmwareimages in Pakete auf. Der Host sendet jedes Paket sequenziell in einem separaten FIRMWARE_UPDATE CONTENT-Befehl. Die primäre Komponente muss ein Antwortpaket für jeden Befehl generieren.

Jeder FIRMWARE_UPDATE CONTENT-Befehl beschreibt eine Offsetadresse, die eine partielle Firmwarenutzlast enthält. Die Komponente verwendet den Offset, um die Adresse zu bestimmen, an der die partielle Firmwarenutzlast gespeichert werden muss. Das Gerät schreibt den Inhalt an einen geeigneten Speicherort und bestätigt den Befehl durch Senden einer Antwort.

Für das erste Paket, das der Host sendet, legt es das FIRMWARE_UPDATE_FLAG_FIRST_BLOCK Flag fest, das angibt, dass es sich um das erste Paket des Firmwareimages handelt. Falls sich das Gerät noch nicht darauf vorbereitet hat, die Firmware zu empfangen, kann es dies jetzt tun.

Für das letzte Paket, das der Host sendet, setzt er das Flag FIRMWARE_UPDATE_FLAG_LAST_BLOCK.

Nachdem die aktuelle Firmware auf dem Gerät die teilielle Firmwarenutzlast geschrieben hat, die in diesem Befehl enthalten ist, muss sie Validierungs- und Authentifizierungsprüfungen für das eingehende Firmwareimage durchführen, bevor eine Antwort gesendet wird. Dies umfasst minimal Folgendes:

  • Eine CRC-Überprüfung, um die Integrität des gesamten Firmwareimages zu überprüfen.

  • Wenn die CRC-Überprüfung erfolgreich ist, kann optional die Signatur des eingehenden Bildes überprüft werden.

  • Nach der optionalen Signaturüberprüfung wird eine Version überprüft, um sicherzustellen, dass die neue Firmwareversion identisch oder neuer ist als die vorhandene Firmware.

Falls das eingehende Firmwareimage in kleinere Segmente unterteilt wurde, liegt es bei der aktuellen Firmware, um festzustellen, ob es sich um das letzte Segment des Firmwareimages handelt, und anschließend alle Segmente als Teil der Überprüfung einschließen.

Wenn die vorherigen Überprüfungen bestehen, kann die aktuelle Firmware das Gerät so einrichten, dass es beim nächsten Zurücksetzen auf das neue Image wechselt, und meldet den Erfolg an den Host. In der Regel führt die Komponente keinen Selbstreset durch. Dies ist die Verhinderung von Unterbrechungen in Software, Firmware, Hardwareentitäten, mit denen die Komponente interagiert. Dies ist jedoch keine Anforderung und kann je nach Implementierung variieren.

Wenn die Überprüfungsschritte fehlschlagen, darf die Firmware beim nächsten Zurücksetzen keinen Swap einrichten und muss dem Host eine Fehlerantwort zurückgeben.

4.1.5 Entscheidungsstaat: Gibt es weitere Angebote

In diesem Zustand bestimmt der Host, ob weitere Angebote zum Senden an das Gerät vorhanden sind.

4.1.6 Status: OFFER_INFO_END_OFFER_LIST Benachrichtigung

Dieser Zustand wird erreicht, wenn der Host alle Angebote an die primäre Komponente in der aktuellen Gerätefirmware gesendet hat. Der Host sendet den befehl OFFER_INFO_END_OFFER_LIST, um anzugeben, dass er alle Angebote an die Komponente gesendet hat.

Das Gerät muss diesen Befehl erfolgreich abschließen.

4.1.7 Entscheidungszustand: Angebotsliste wiederholen

Der Host bestimmt, ob es alle Angebote erneut senden muss. Dieser Fall kann auftreten, wenn zuvor die primäre Komponente einige Angebote übersprungen und einige Angebote akzeptiert hatte. Der Host muss die Angebotsliste erneut abspielen.

Möglicherweise gibt es eine andere implementierungsspezifische Logik, die zu einer Entscheidung zur Wiedergabe der Angebotsliste führen kann.

4.1.8 Zustand: Gerät ist ausgelastet

Dieser Zustand impliziert, dass ein Gerät eine ausgelastete Antwort auf ein Angebot zurückgegeben hat.

Der Host sendet einen OFFER_NOTIFY_ON_READY-Befehl, an den das Gerät nicht mit Akzeptanz reagiert, bis das Gerät frei ist.

5 CFU Protokollpaket-Format

Das CFU-Protokoll wird als Satz von Befehlen und Antworten implementiert. Das Protokoll ist in der Natur sequenziell. Für jeden Befehl, den der Host an eine Komponente sendet, wird erwartet, dass die Komponente antwortet (sofern in dieser Spezifikation nicht explizit anders angegeben). Der Host sendet den nächsten Befehl erst, wenn eine gültige Antwort für den vorherigen gesendeten Befehl empfangen wird.

Falls die Komponente nicht innerhalb eines Zeitraums antwortet oder eine ungültige Antwort sendet, kann der Host den Prozess von Anfang an neu starten. Dieses Protokoll definiert keinen bestimmten Timeoutwert.

Es gibt Befehle zum Abrufen der Versionsinformationen der aktuellen Firmware für die Komponente; um das Angebot zu senden und das Firmwareimage zu senden.

Der Host muss jedoch kein Angebot zurückhalten, basierend auf der Antwort, die von der primären Komponente über die abgefragten Versionsinformationen empfangen wurde. Die Informationen werden für die Protokollierung oder andere Zwecke auffindbar gemacht.

5.1 GET_FIRMWARE_VERSION (Firmwareversion abrufen)

Ruft die aktuelle Firmwareversion(en) der primären Komponente (und deren Unterkomponenten) ab. Der Befehl hat keine Argumente.

Befehl 5.1.1

Dieser Befehl wird vom Host gesendet, um die Version(en) der aktuellen Firmware(en) der primären Komponente (und deren Unterkomponenten) abzufragen. Der Host kann es verwenden, um zu bestätigen, ob die Firmware erfolgreich aktualisiert wurde. Beim Empfang dieses Befehls antwortet die primäre Komponente mit der Firmwareversion für sich selbst und allen Unterkomponenten.

5.1.2 Antwort

Die Komponente antwortet mit der Firmwareversion der primären Komponente und den Unterkomponenten. Die Antwortgröße beträgt 60 Byte, die Versionsinformationen für bis zu sieben Komponenten zulassen (eine primäre und bis zu sechs Unterkomponenten).

Tabelle 5.1-1 GET_FIRMWARE_VERSION Antwortlayout

GET_FIRMWARE_VERSION Antwortstruktur.

5.1.2.1 Kopfzeile
Tabelle 5.1-2 GET_FIRMWARE_VERSION Antwort – Kopfzeilenlayout

GET_FIRMWARE_VERSION Antwort – Kopfzeilenlayout.

Der Header für die Antwort enthält die folgenden Informationen.

Tabelle 5.1-3 GET_FIRMWARE_VERSION Antwort – Header-Bits
Bitversatz Feld Größe BESCHREIBUNG
0 Komponentenanzahl 8 Die Anzahl der herunterladbaren Komponenten, die über diesen Mechanismus für diese Komponente verwaltet werden. Die Anzahl der Komponenten bestimmt die maximale Tabellengröße. Derzeit werden bis zu 7 Komponenten unterstützt, um sicherzustellen, dass die Antwort in die zulässigen 60 Bytes passen kann.
8 Rsvd 16 Reservierte Felder. Absender muss diese auf 0 festlegen. Der Empfänger muss diesen Wert ignorieren.
24 Protokollversion 4 Die Firmwareupdate-Revisionsbits stellen die FW Update Protocol-Revision dar, die derzeit im Transport verwendet wird. Für die hierin definierte Schnittstelle muss die FW Update Revision 0010b sein.
28 Rsvd 3 Reservierte Felder. Absender muss diese auf 0 festlegen. Der Empfänger muss diesen Wert ignorieren.
31 E 1 Das Erweiterungsflaggen ist ein zukünftiger Protokollhaken, mit dem zusätzliche Komponenten gemeldet werden können.
5.1.2.2 Komponentenversion und -eigenschaften

Für jeweils bis zu 7 Komponenten werden zwei DWORDs verwendet, um deren Eigenschaften zu beschreiben. Wenn die Anzahl der Komponenten im Header kleiner als 7 ist, muss das nicht verwendete DWORDS am Ende der Antwort auf 0 festgelegt werden.

Tabelle 5.1-4 GET_FIRMWARE_VERSION Antwort – Komponentenversions- und Eigenschaftenlayout

GET_FIRMWARE_VERSION Antwort – Komponentenversions- und Eigenschaftenlayout.

Jede Komponentenspezifische Informationen werden in zwei DWORDs wie folgt beschrieben:

Tabelle 5.1-5 GET_FIRMWARE_VERSION-Antwort – Komponentenversion und Eigenschaften Bits
Bitversatz Feld Größe BESCHREIBUNG
0 Firmwareversion 32 Gibt die Version der aktuellen Firmware für diese Komponente zurück. Diese Spezifikation schreibt kein bestimmtes Format für die Firmwareversion vor. Siehe Abschnitt Firmware-Version für Richtlinien.
32 Bank 2 Wahlfrei. Je nach Architektur verfügt die Komponentenhardware möglicherweise über mehrere Banken, in denen die Firmware gespeichert werden kann. Je nach Implementierung kann der Absender die Bank angeben, in der die Firmware derzeit vorhanden ist. Dieses Feld ist bedingt obligatorisch – Die Unterstützung ist optional, darf jedoch nicht für andere Zwecke verwendet werden.
34 Reserviert 2 Reservierte Felder. Absender muss diese auf 0 festlegen. Der Empfänger muss diesen Wert ignorieren.
36 Anbieterspezifisch 4 Anbieterspezifisches Feld, das in einer implementierungsspezifischen Weise verwendet werden kann.

Ein Anbieter könnte diese Bits verwenden, um Informationen zu codieren, z. B.:

- Firmwaretyp: Vorabversion/Selbst-Hosting/Produktion; Debug-Version/Einzelhandelsversion

- Entwicklungsphase

– Produkt-ID, um zu verhindern, dass Komponenten Firmware für andere Produkte mit demselben Updateprotokoll empfangen.
40 Komponenten-ID 8 Ein eindeutiger Bezeichner für die Komponente.
48 Anbieterspezifisch 16 Anbieterspezifisches Feld, das in einer implementierungsspezifischen Weise verwendet werden kann.

5.1.3 Zuordnung zu HID

Dies wird zusätzlich zur Berichts-ID als HID Get Feature-Anforderung mit einer Antwortgröße von 60 Byte implementiert. Die Länge des Featureberichts entspricht der gesamten GET_FIRMWARE_VERSION Antwort. Der Anforderung "Feature abrufen" vom Host sind keine Daten zugeordnet.

5.2 FIRMWARE_AKTUALISIERUNGSANGEBOT

Bestimmt, ob die primäre Komponente eine Firmware akzeptiert oder ablehnt.

Befehl 5.2.1

Der Host sendet diesen Befehl an die Komponente, um festzustellen, ob er eine Firmware akzeptiert oder ablehnt. Der Host muss ein Angebot senden, und die Komponente muss das Angebot akzeptieren, bevor der Host die Firmware senden kann.

Das FIRMWARE_UPDATE_OFFER Befehlspaket wird wie folgt definiert.

Tabelle 5.2-1 FIRMWARE_UPDATE_OFFER Befehlsstruktur

FIRMWARE_UPDATE_OFFER Befehlslayout.

5.2.1.1 Komponenteninformationen
Tabelle 5.2-2 FIRMWARE_UPDATE_OFFER-Befehl – Komponenten-Informationslayout

FIRMWARE_UPDATE_OFFER Kommando - Komponenteninformationslayout.

Die Bits des Komponenteninformationsbytes werden in dieser Tabelle beschrieben.

Tabelle 5.2-3 FIRMWARE_UPDATE_OFFER Befehl – Komponenteninformationsbits
Bitversatz Feld Größe BESCHREIBUNG
0 Segmentnummer 8 Dieses Feld wird verwendet, falls die Firmware für eine Komponente in kleinere Segmente unterteilt wird. Wenn dieser Wert verwendet wird, gibt dieser Wert das Segment an, das im nachfolgenden Nutzlastpaket enthalten ist. Beispiel: Wenn das Firmwareimage für die Komponente sehr groß ist und die primäre Komponente nur kleinere Teile des Bilds gleichzeitig aufnehmen kann, kann dieses Feld verwendet werden, um anzugeben, dass dieses Angebot für das i-th-Segment des vollständigen Bilds bestimmt ist. Ein separates Angebot kann an die primäre Komponente gesendet werden, die das i+1.-Segment des Bilds usw. enthält.
8 Reserviert 6 Reservierte Felder. Absender muss diese auf 0 festlegen. Der Empfänger muss diesen Wert ignorieren.
14 Ich 1 Sofortiges Zurücksetzen erzwingen (I)

– Dieser Bitwert wird verwendet, um der Komponente anzuzeigen, dass sie sich unmittelbar nach Abschluss und Überprüfung des Firmwaredownloads selbst zurücksetzen soll, um das Firmware-Update sofort zu aktivieren.

- Dieses Kennzeichen ist für die Entwicklungsphase vorgesehen.
15 V 1 Ignorieren der Version erzwingen (V)

– Dieses Kennzeichen ist für Vorabversions- oder Debugfirmwareimages vorgesehen. Die Komponente wird angewiesen, die Firmware nicht wegen der Firmwareversion zurückzuweisen.

- Dieses Kennzeichen ist für die Entwicklungsphase vorgesehen. Es kann verwendet werden, um absichtlich ein Rollback auf eine frühere Firmwareversion durchzuführen.

- Dieses Kennzeichen sollte von der Produktionsfirmware ignoriert werden.
16 Komponenten-ID 8 Dieses Byte wird für Szenarien mit mehreren Komponenten verwendet. Dieses Feld kann verwendet werden, um den Unterteil zu identifizieren, für den das Angebot vorgesehen ist. Wenn der Wert nicht verwendet wird, sollte 0 sein. Die möglichen Werte von Komponenten-IDs sind wie folgt:

1 - 0xDF: Gültig

0xE0 - 0xFD: Reserviert. Verwenden Sie es nicht.

0xFF: Das Angebot ist ein Spezielles Angebotsinformationspaket. Weitere Einzelheiten finden Sie in den Informationen zu FIRMWARE_UPDATE_OFFER.

0xFE: Das Angebot ist ein Spezielles Angebotsbefehlspaket. Ausführliche Informationen finden Sie im Abschnitt [Erweiterte FIRMWARE_UPDATE_OFFER].
24 Token 8 Der Host fügt ein eindeutiges Token in das an die Komponente gerichtete Angebotspaket ein. Dieses Token muss von der Komponente in der Angebotsantwort zurückgegeben werden.

Dies ist nützlich, wenn es erforderlich ist, dass die Komponente zwischen den verschiedenen Hosts/Typen von Hosts unterscheiden muss.

Genaue zu verwendende Werte sind implementierungsspezifisch. Beispielsweise kann ein Wert für einen Treiber und einen anderen für die Anwendung verwendet werden. Auf diese Weise kann die aktuelle Gerätefirmware potenzielle mehrere Absender von CFU-Befehlen berücksichtigen. Eine mögliche Implementierung kann sein, den ersten CFU-Befehl zu akzeptieren und alle anderen Befehle mit unterschiedlichen Token abzulehnen, bis die ersten CFU-Transaktionen abgeschlossen sind.
5.2.1.2 Firmwareversion

Diese vier Bytes stellen die 32-Bit-Version der Firmware dar. Das Format für die Firmwareversion wird von dieser Spezifikation nicht vorgeschrieben. Folgendes wird empfohlen.

Tabelle 5.2-4 FIRMWARE_UPDATE_OFFER Befehl – Firmwareversionslayout

Befehl FIRMWARE_UPDATE_OFFER – Firmware-Version-Layout.

Das Format für die Firmwareversion wird von dieser Spezifikation nicht vorgeschrieben, es folgt jedoch eine empfohlene Richtlinie.

Tabelle 5.2-5 FIRMWARE_UPDATE_OFFER Befehl – Firmwareversionsbits
Bitversatz Feld Größe BESCHREIBUNG
0 Variante 8 Dieses Feld kann beschrieben werden, um zwischen einer Vorabversionsfirmware und Produktionsfirmware zu unterscheiden. Es kann den Typ der Signatur angeben, die zum Signieren der Firmware verwendet wird.
8 Nebenversion 16 Dieser Feldwert sollte für jeden Build der Firmware aktualisiert werden.

Dieser Feldwert sollte für jeden Build der Firmware aktualisiert werden.
24 Hauptversion 8 Dieses Feld ist die Hauptversion des Firmwareimages. Dieses Feld sollte aktualisiert werden, wenn eine neue Produktlinie, wichtige neue Updates für die Firmware usw. ausgeliefert werden.
5.2.1.3 Anbieterspezifisch

Diese vier Bytes können verwendet werden, um benutzerdefinierte Informationen im Angebot zu codieren, die für die Anbieterimplementierung spezifisch sind.

5.2.1.4 Sonstige und Protokollversion

Diese vier Bytes können verwendet werden, um benutzerdefinierte Informationen im Angebot zu codieren, die für die Anbieterimplementierung spezifisch sind.

Tabelle 5.2-6 FIRMWARE_UPDATE_OFFER Befehl – Anbieterspezifisches Layout

befehl FIRMWARE_UPDATE_OFFER – Anbieterspezifisches Layout.

Die Bits des anbieterspezifischen Byte werden in dieser Tabelle beschrieben.

Tabelle 5.2-7 FIRMWARE_UPDATE_OFFER Befehl – Sonstiges und Protokollversion
Bitversatz Feld Größe BESCHREIBUNG
0 Protokollversion 4 Dieses Feld muss auf 0010b festgelegt werden, der angibt, dass der Host/das Angebot der Version 2 des CFU-Protokolls entspricht.
4 Reserviert 4 Reserviert. Verwenden Sie es nicht.
8 Reserviert 8 Reserviert. Verwenden Sie es nicht.
16 Anbieterspezifisch 16 Dieses Feld kann verwendet werden, um benutzerdefinierte Informationen im Angebot zu codieren, die für die Anbieterimplementierung spezifisch sind.

5.2.2 Antwort

Das FIRMWARE_UPDATE_OFFER Antwortpaket wird wie folgt definiert.

Tabelle 5.2-8 FIRMWARE_UPDATE_OFFER Antworttokenlayout

FIRMWARE_UPDATE_OFFER Antwort-Token-Layout.

5.2.2.1 Token
Tabelle 5.2-9 FIRMWARE_UPDATE_OFFER Antwort – Tokenlayout

FIRMWARE_UPDATE_OFFER Response – Token Layout.

Die Bits des Tokenbytes werden in dieser Tabelle beschrieben.

Tabelle 5.2-10 FIRMWARE_UPDATE_OFFER Antwort – Token Bits
Bitversatz Feld Größe BESCHREIBUNG
0 Reserviert 8 Reserviert. Verwenden Sie es nicht.
8 Reserviert 8 Reserviert. Verwenden Sie es nicht.
16 Reserviert 8 Reserviert. Verwenden Sie es nicht.
24 Token 8 Token zum Identifizieren des Hosts.
5.2.2.2 Reserviert (B7 - B4)

Reserviert. Verwenden Sie es nicht.

5.2.2.3 Ablehnungsgrund (RR)
Tabelle 5.2-11 FIRMWARE_UPDATE_OFFER Antwort - Layout der Ablehnungsgründe

FIRMWARE_UPDATE_OFFER Antwort –

Tabelle 5.2-12 FIRMWARE_UPDATE_OFFER Antwort – Ablehnungsgrund-Bits

Die Bits des "Ablehnungsgrund"-Bytes werden in dieser Tabelle beschrieben.

Bitversatz Feld Größe BESCHREIBUNG
0 RR-Code 8 Der Ablehnungscode, der den vom Bauteil bereitgestellten Grund für die Ablehnung des Angebots angibt. Dieser Wert hängt vom Feld "Status" ab. Eine Status-zu-RR-Codezuordnung finden Sie in Tabelle 5.2-13.
8 Reserviert 24 Reserviert. Verwenden Sie es nicht.
Tabelle 5.2-13 FIRMWARE_UPDATE_OFFER Antwort-RR-Codewerte

Die möglichen Werte für das RR-Codebyte werden in dieser Tabelle beschrieben.

RR-Code Name BESCHREIBUNG
0x00 FIRMWARE_OFFER_REJECT_OLD_FW (Firmware-Angebot ablehnen - alte Firmware) Das Angebot wurde abgelehnt, da die Version der angebotenen Firmware älter oder identisch mit der aktuellen Firmware ist.
0x01 FIRMWARE_OFFER_REJECT_INV_COMPONENT Das Angebot wurde abgelehnt, da die angebotene Firmware nicht auf die Plattform des Produkts anwendbar ist. Dies kann auf eine nicht unterstützte Komponenten-ID oder ein angebotenes Image zurückzuführen sein, das nicht mit der Systemhardware kompatibel ist.
0x02 FIRMWARE_AKTUALISIERUNG_ANGEBOT UMWELTTAUSCH_AUSSTEHEND Die Komponentenfirmware wurde aktualisiert, aber ein Austausch mit der neuen Firmware steht aus. Es kann keine weitere Verarbeitung des Firmware-Updates erfolgen, bis der Wechsel abgeschlossen ist, in der Regel durch einen Neustart.
0x03 - 0x08 (Reserviert) Reserviert. Verwenden Sie es nicht.
0x09 - 0xDF (Reserviert) Reserviert. Verwenden Sie es nicht.
0xE0 - 0xFF (Anbieterspezifisch) Diese Werte werden von den Designern des Protokolls verwendet, und die Bedeutung ist anbieterspezifisch.
5.2.2.4 Status
Tabelle 5.2-14 FIRMWARE_UPDATE_OFFER Antwortstatus-Layout

FIRMWARE_UPDATE_OFFER Antwortstatus-Layout.

Die Bits des Statusbytes werden in dieser Tabelle beschrieben.

Tabelle 5.2-15 FIRMWARE_UPDATE_OFFER Rückmeldung – Statusbits
Bitversatz Feld Größe BESCHREIBUNG
0 Der Status 8 Dieser Wert zeigt die Entscheidung der Komponente, das Angebot anzunehmen, zu verzögern, zu überspringen oder abzulehnen. Die Komponente stellt den Grund im Wertefeld des RR-Codes bereit. Eine Status-zu-RR-Codezuordnung finden Sie in Tabelle 5.2-16.
8 Reserviert 24 Reserviert. Verwenden Sie es nicht.

Die möglichen Werte für das Statusbyte werden in dieser Tabelle beschrieben.

Tabelle 5.2-16 FIRMWARE_UPDATE_OFFER Antwortstatuswerte
Der Status Name BESCHREIBUNG
0x00 FIRMWARE_UPDATE_ANBIETEN_ÜBERSPRINGEN Die Komponente hat beschlossen, das Angebot abzulehnen. Der Gastgeber muss es später erneut anbieten.
0x01 FIRMWARE_UPDATE_OFFER_ACCEPT Die Komponente hat beschlossen, das Angebot anzunehmen.
0x02 Firmware-Aktualisierungsangebot ablehnen Die Komponente hat beschlossen, das Angebot abzulehnen.
0x03 Firmware-Update-Angebot ist beschäftigt Das Gerät ist ausgelastet, und der Host muss warten, bis das Gerät bereit ist.
0x04 FIRMWARE_UPDATE_OFFER_COMMAND Wird verwendet, wenn die Komponenten-ID in den Komponenteninformationen (siehe 5.1.2.1.1 Komponenteninformation) auf 0xFE festgelegt wird.

Für einen Befehlscode, der auf die Anforderung OFFER_NOTIFY_ON_READY gesetzt ist, zeigt dies an, dass das Zubehör bereit ist, zusätzliche Angebote zu akzeptieren.
0xFF FIRMWARE_AKTUALISIERUNGS_BEFEHL_NICHT_UNTERSTÜTZT Die Angebotsanfrage wird nicht erkannt.

5.2.3 Zuordnung zum HID-Protokoll

Die Nachricht wird über den HID-Ausgabeberichtsmechanismus an die Komponente ausgegeben, indem die dedizierte HID-Hilfsprogrammbericht-ID für Firmwareupdates verwendet wird. ** Die HID Utility TLC, die im Anhang beschrieben wird, zu verwenden.

5.3 FIRMWARE_UPDATE_OFFER - Informationen

Wenn die Komponenten-ID in den Komponenteninformationsbytes (siehe Komponenteninformationen) auf 0xFF festgelegt ist, werden Bits (15 Byte) neu definiert, um nur Angebotsinformationen anzugeben, vom Host bis zur Komponente. Dieser Mechanismus ermöglicht die Erweiterbarkeit und eine Möglichkeit für den Host, bestimmte Informationen für das Gerät bereitzustellen, z. B. "Angebotsliste starten", "Angebotsliste beenden", "Gesamte Transaktion starten". Angebotsinformationspakete werden immer sofort von der Komponente akzeptiert.

Befehl 5.3.1

Das FIRMWARE_UPDATE_OFFER -Information Befehlspaket ist wie folgt definiert:

Tabelle 5.3-1 FIRMWARE_UPDATE_OFFER – Informationsbefehlslayout

FIRMWARE_UPDATE_OFFER – Informationsbefehlslayout.

5.3.1.1 Komponente
Tabelle 5.3-2 FIRMWARE_UPDATE_OFFER – Informationsbefehl - Komponentenlayout

FIRMWARE_UPDATE_OFFER - Informationskommando - Komponentenlayout.

Die Bits des Komponentenbytes werden in dieser Tabelle beschrieben.

Tabelle 5.3-3 FIRMWARE_UPDATE_OFFER – Informationskommando – Komponenten-Bits
Bitversatz Feld Größe BESCHREIBUNG
0 Informationscode 8 Dieser Wert gibt den Informationstyp an. Dieser Wert ist keine Bitmaske und kann nur einer der möglichen Werte sein, die in Tabelle 5.3-4 beschrieben sind.
8 Reserviert. 8 Reserviert. Verwenden Sie es nicht.
16 Komponenten-ID 8 Auf 0xFF festgelegt.
24 Token Der Host fügt ein eindeutiges Token in das an die Komponente gerichtete Angebotspaket ein. Dieses Token muss von der Komponente in der Angebotsantwort zurückgegeben werden.
Tabelle 5.3-4 FIRMWARE_UPDATE_OFFER – Informationsbefehl – Werte des Informationscodes
Der Status Name BESCHREIBUNG
0x00 ANGEBOTS_INFO_START_GESAMTE_TRANSAKTION Gibt an, dass der Host neu ist oder neu geladen wurde, und die gesamte Angebotsverarbeitung wird (neu) gestartet.
0x01 OFFER_INFO_START_OFFER_LIST Gibt den Anfang der Angebotsliste vom Host an, falls das Zubehör Downloadregeln aufweist, die sicherstellen, dass eine Unterkomponente im System vor einer anderen Unterkomponente aktualisiert wird.
0x02 OFFER_INFO_END_OFFER_LIST Gibt das Ende der Angebotsliste vom Host an.
5.3.1.2 Reserviert b7 - B4

Reserviert. Verwenden Sie es nicht.

5.3.1.3 Reserviert B11 - B8

Reserviert. Verwenden Sie es nicht.

5.3.1.4 Reserviert B15 - B12

Reserviert. Verwenden Sie es nicht.

5.3.2 Antwort

Das Antwortpaket für das "Angebot zur Firmware-Aktualisierung" – "Information Response" wird wie folgt definiert.

Tabelle 5.3-5 FIRMWARE_UPDATE_OFFER – Informationsantwortlayout

FIRMWARE_UPDATE_OFFER – Informationsantwortschema.

5.3.2.1 Kennung
Tabelle 5.3-6 FIRMWARE_UPDATE_OFFER– Layout des Informationspaket-Antworttokens

FIRMWARE_UPDATE_OFFER– Layout des Informationspaket-Antworttokens.

Die Bits des Tokenbytes werden in dieser Tabelle beschrieben.

Tabelle 5.3-7 FIRMWARE_UPDATE_OFFER – Informationsantwort – Token-Bits
Bitversatz Feld Größe BESCHREIBUNG
0 Reserviert 8 Reserviert. Verwenden Sie es nicht.
8 Reserviert 8 Reserviert. Verwenden Sie es nicht.
16 Reserviert 8 Reserviert. Verwenden Sie es nicht.
24 Token 8 Token zum Identifizieren des Hosts
5.3.2.2 Reserviert B7 - B4

Reserviert. Verwenden Sie es nicht.

5.3.2.3 Ablehnungsgrund (RR)
Tabelle 5.3-8 FIRMWARE_UPDATE_OFFER – Informationsantwort – RR-Codelayout

FIRMWARE_UPDATE_OFFER - Informationsantwort - RR-Codelayout.

Die Bits des "Ablehnungsgrund"-Bytes werden in dieser Tabelle beschrieben.

Tabelle 5.3-9 FIRMWARE_UPDATE_OFFER – Angebotsinformationsantwort – RR-Code-Bits
Bitversatz Feld Größe BESCHREIBUNG
0 RR-Code 8 Der Ablehnungscode, der den vom Bauteil bereitgestellten Grund für die Ablehnung des Angebots angibt. Die möglichen Werte werden in Tabelle 5.3-10 beschrieben. Dieser Wert hängt vom Feld "Status" ab.
8 Reserviert 24 Reserviert. Verwenden Sie es nicht.

Die möglichen Werte für das RR-Codebyte werden in dieser Tabelle beschrieben.

Tabelle 5.3-10 FIRMWARE_UPDATE_OFFER– Informationsantwort – RR-Codewerte
RR-Code Name BESCHREIBUNG
0x00 FIRMWARE_OFFER_REJECT_OLD_FW (Firmware-Angebot ablehnen - alte Firmware) Das Angebot wurde abgelehnt, da die Version der angebotenen Firmware älter oder identisch mit der aktuellen Firmware ist.
0x01 FIRMWARE_OFFER_REJECT_INV_COMPONENT Das Angebot wurde abgelehnt, da die angebotene Firmware nicht auf die Plattform des Produkts anwendbar ist. Dies kann auf eine nicht unterstützte Komponenten-ID oder ein angebotenes Image zurückzuführen sein, das nicht mit der Systemhardware kompatibel ist.
0x02 FIRMWARE_AKTUALISIERUNG_ANGEBOT UMWELTTAUSCH_AUSSTEHEND Die Komponentenfirmware wurde aktualisiert, aber ein Austausch mit der neuen Firmware steht aus. Es kann keine weitere Verarbeitung des Firmware-Updates erfolgen, bis der Wechsel abgeschlossen ist, in der Regel durch einen Neustart.
0x03 - 0x08 (Reserviert) Reserviert. Verwenden Sie es nicht.
0x09 - 0xDF (Reserviert) Reserviert. Verwenden Sie es nicht.
0xE0 — 0xFF (Anbieterspezifisch) Diese Werte werden von den Designern des Protokolls verwendet, und die Bedeutung ist anbieterspezifisch.
5.3.2.4 Status
Tabelle 5.3-11 FIRMWARE_UPDATE_OFFER – Angebotsinformationsantwortstatus-Layout

FIRMWARE_UPDATE_OFFER - Layout für Angebotsinformationsantwortstatus.

Die Bits des Statusbytes werden in dieser Tabelle beschrieben.

Tabelle 5.3-12 FIRMWARE_UPDATE_OFFER – Angebotsinformationen – Antwortstatus-Bits
Bitversatz Feld Größe BESCHREIBUNG
0 Der Status 8 Dieses Feld muss auf FIRMWARE_UPDATE_OFFER_ACCEPT festgelegt werden. Dies weist darauf hin, dass die Komponente beschlossen hat, das Angebot anzunehmen.
8 Reserviert. 24 Reserviert. Verwenden Sie es nicht.

5.4 FIRMWARE_UPDATE_OFFER - Erweitert

Wenn die Komponenten-ID in den Komponenteninformationsbytes auf 0xFE festgelegt ist, werden Bits (15 Byte) neu definiert, um den Angebotsbefehl vom Host bis zur Gerätefirmware anzugeben. Dieser Mechanismus ermöglicht die Erweiterbarkeit und eine Möglichkeit für den Host, bestimmte Informationen für das Gerät bereitzustellen. Angebotsbefehlspakete werden zurückgegeben, wenn die Komponente bereit ist, auf "Accepted" zu antworten.

Befehl 5.4.1

Wenn die Komponenten-ID in den Komponenteninformationsbytes auf 0xFE festgelegt ist, werden die vier DWORDs wie folgt neu definiert:

Tabelle 5.4-1 FIRMWARE_UPDATE_OFFER – Erweitertes Befehlslayout

FIRMWARE_UPDATE_OFFER – Erweitertes Befehlslayout.

5.4.1.1 Komponente
Tabelle 5.4-2 FIRMWARE_UPDATE_OFFER - Erweitertes Befehlspaket - Befehl - Komponentenlayout

FIRMWARE_UPDATE_OFFER - Erweitertes Befehlssatz - Befehl - Komponentenaufbau.

Die Bits des Komponentenbytes werden in dieser Tabelle beschrieben.

Tabelle 5.4-3 FIRMWARE_UPDATE_OFFER – Erweiterter Befehl – Komponentenbits
Bitversatz Feld Größe BESCHREIBUNG
0 Befehlscode 8 Dieser Wert gibt den Befehlstyp an. Dieser Wert ist keine Bitmaske und kann nur einer der möglichen Werte sein, die in Tabelle 5,4-4 beschrieben sind.
8 Reserviert. 8 Reserviert. Verwenden Sie es nicht.
16 Komponenten-ID 8 Auf 0xFE festgelegt.
24 Token Der Host fügt ein eindeutiges Token in das an die Komponente gerichtete Angebotspaket ein. Dieses Token muss von der Komponente in der Angebotsantwort zurückgegeben werden.
Tabelle 5.4-4 FIRMWARE_UPDATE_OFFER – Erweiterter Befehl – Befehlscodewerte
Der Status Name BESCHREIBUNG
0x01 Angebot_Benachrichtigen_Wenn_Fertig Gesendet vom Host, wenn das Angebot zuvor von der Komponente abgelehnt wurde.
0x02 - 0xFF Reserviert Reserviert
5.4.1.2 Reserviert B7 - B4

Reserviert. Verwenden Sie es nicht.

5.4.1.3 Reserviert B11 - B8

Reserviert. Verwenden Sie es nicht.

5.4.1.4 Reserviert B15 - B12

Reserviert. Verwenden Sie es nicht.

5.4.2 Antwort

Die FIRMWARE_UPDATE_OFFER – Angebotsbefehlsantwort vom Gerät wird möglicherweise nicht sofort empfangen. Die Antwort wird wie folgt definiert.

Tabelle 5.4-5 FIRMWARE_UPDATE_OFFER – Layout der erweiterten Befehlspaket-Antwort

FIRMWARE_UPDATE_OFFER – Erweitertes Befehlspaket-Antwortlayout.

5.4.2.1 Token
Tabelle 5.4-6 FIRMWARE_UPDATE_OFFER – Befehlsantwort auf Angebotspaket – Tokenlayout

FIRMWARE_UPDATE_OFFER - Angebotsbefehls-Paketantwort - Token-Layout.

Die Bits des Tokenbytes werden in dieser Tabelle beschrieben.

Tabelle 5.4-7 FIRMWARE_UPDATE_OFFER – Befehlsantwort anbieten – Tokenbits
Bitversatz Feld Größe BESCHREIBUNG
0 Reserviert 8 Reserviert. Verwenden Sie es nicht.
8 Reserviert 8 Reserviert. Verwenden Sie es nicht.
16 Reserviert 8 Reserviert. Verwenden Sie es nicht.
24 Token 8 Token zum Identifizieren des Hosts.
5.4.2.2 Reserviert B7 - B4

Reserviert. Verwenden Sie es nicht.

5.4.2.3 Ablehnungsgrund
Tabelle 5.4-8 FIRMWARE_UPDATE_OFFER – Angebotsinformationspaket-Response-RR-Layout

FIRMWARE_UPDATE_OFFER – Information Packet Response RR-Layout anbieten.

Die Bits des "Ablehnungsgrund"-Bytes werden in dieser Tabelle beschrieben.

Tabelle 5.4-9 FIRMWARE_UPDATE_OFFER – Angebotene Befehlsantwort – RR Code
Bitversatz Feld Größe BESCHREIBUNG
0 RR-Code 8 Dieser Wert hängt vom Feld "Status" ab. Mögliche RR-Codewerte finden Sie in Tabelle 5.4-10.
8 Reserviert 24 Reserviert. Verwenden Sie es nicht.

Die möglichen Werte für das RR-Codebyte werden in dieser Tabelle beschrieben.

Tabelle 5.4-10 FIRMWARE_UPDATE_OFFER- Angebotsbefehlspaket - RR-Codewerte
RR-Code Name BESCHREIBUNG
0x00 FIRMWARE_OFFER_REJECT_OLD_FW (Firmware-Angebot ablehnen - alte Firmware) Das Angebot wurde abgelehnt, da die Version der angebotenen Firmware älter oder identisch mit der aktuellen Firmware ist.
0x01 FIRMWARE_OFFER_REJECT_INV_COMPONENT Das Angebot wurde abgelehnt, da die angebotene Firmware nicht auf die Plattform des Produkts anwendbar ist. Dies kann auf eine nicht unterstützte Komponenten-ID oder ein angebotenes Image zurückzuführen sein, das nicht mit der Systemhardware kompatibel ist.
0x02 FIRMWARE_AKTUALISIERUNG_ANGEBOT UMWELTTAUSCH_AUSSTEHEND Die Komponentenfirmware wurde aktualisiert, aber ein Austausch mit der neuen Firmware steht aus. Es kann keine weitere Verarbeitung des Firmware-Updates erfolgen, bis der Wechsel abgeschlossen ist, in der Regel durch einen Neustart.
0x03 - 0x08 (Reserviert) Reserviert. Verwenden Sie es nicht.
0x09 - 0xDF (Reserviert) Reserviert. Verwenden Sie es nicht.
0xE0 — 0xFF (Anbieterspezifisch) Diese Werte werden von den Designern des Protokolls verwendet, und die Bedeutung ist anbieterspezifisch.
5.4.2.4 Status
Tabelle 5.4-11 FIRMWARE_UPDATE_OFFER – Layout des Paketantwortstatus für Angebotsbefehl

FIRMWARE_UPDATE_OFFER – Layout des Antwortstatus für Befehls-Paket-Angebot.

Die Bits des Statusbytes werden in dieser Tabelle beschrieben.

Tabelle 5.4-12 FIRMWARE_UPDATE_OFFER: Befehlspaketantwort-RR-Code anbieten
Bitversatz Feld Größe BESCHREIBUNG
0 Der Status 8 Dieses Feld muss auf FIRMWARE_UPDATE_OFFER_ACCEPT festgelegt werden. Dies weist darauf hin, dass die Komponente beschlossen hat, das Angebot anzunehmen.
8 Reserviert. 24 Reserviert. Verwenden Sie es nicht.

5.5 FIRMWARE_UPDATE_CONTENT

Der Host sendet diesen Befehl an die Gerätefirmware, um den Firmwareinhalt (d. a. das Firmwareimage) bereitzustellen. Es wird nicht erwartet, dass die gesamte Bilddatei in einen einzelnen Befehl passt. Der Host muss das Bild in kleinere Blöcke unterteilen, und jeder Befehl sendet jeweils einen Block des Bilds.

Bei jedem Befehl gibt der Host zusätzliche Informationen an – unabhängig davon, ob es sich um den ersten Block, den letzten Block usw. der Firmware handelt. Die primäre Komponente der Gerätefirmware akzeptiert jeden Block des eingehenden Firmwareimages, speichert ihn im Speicher und muss auf jeden Befehl einzeln reagieren.

Wenn die primäre Komponente den letzten Block empfängt, überprüft die Komponente das gesamte Firmwareimage (CRC-Überprüfung, Signaturüberprüfung). Basierend auf den Ergebnissen dieser Prüfungen wird für den letzten Block eine entsprechende Antwort (Fehler oder Erfolg) zurückgegeben.

Befehl 5.5.1

Tabelle 5.5-1, FIRMWARE_UPDATE_CONTENT Befehlsstruktur

FIRMWARE_UPDATE_CONTENT-Befehls-Layout.

5.5.1.1 Kopfzeile (B7 - B0)
Tabelle 5.5-2 FIRMWARE_UPDATE_CONTENT Befehlsheader-Layout

FIRMWARE_UPDATE_CONTENT Befehlskopflayout.

Die Bits des FIRMWARE_UPDATE_CONTENT Headers werden in dieser Tabelle beschrieben.

Tabelle 5.5-3 FIRMWARE_UPDATE_CONTENT Kopfzeilenbits
Bitversatz Feld Größe BESCHREIBUNG
0 Flaggen 8 Dieses Feld enthält zusätzliche Informationen zum Befehl. Dieser Wert ist eine Maske von Flags, die für die Datenübertragungen verwendet werden sollen. Die möglichen Werte werden in Tabelle 5.5-4 beschrieben.
8 Datenlänge 8 Die Länge des anwendbaren Datenfelds, das die Anzahl der zu schreibenden Bytes angibt.

Aufgrund der Größe dieses Befehls beträgt der maximal zulässige Wert für die Länge 52 Byte.
16 Sequenznummer 16 Dieser Wert wird vom Host erstellt und ist für jedes ausgegebene Inhaltspaket eindeutig. Die Komponente muss die Sequenznummer in ihrer Antwort auf diese Anforderung zurückgeben.
32 Firmwareadresse 32 Little Endian (LSB First) Adresse zum Schreiben der Daten. Die Adresse ist 0-basiert. Die Firmware verwendet dies als Offset, um die Adresse nach Bedarf zu bestimmen, wenn das Bild im Arbeitsspeicher platziert wird.

Die möglichen Werte für das Flags-Byte werden in dieser Tabelle beschrieben.

Tabelle 5.5-4 FIRMWARE_UPDATE_OFFER - Angebots-Befehlsdatenpaket - Flagwerte
Flagge Name BESCHREIBUNG
0x80 FIRMWARE_UPDATE_FLAG_FIRST_BLOCK Dieses Kennzeichen gibt an, dass dies der erste Block des Firmwareimages ist.
0x40 FIRMWARE_UPDATE_FLAG_LETZTER_BLOCK Dieses Kennzeichen gibt an, dass es sich um den letzten Block des Firmwareimages handelt und dass das Image zur Überprüfung bereit ist.

Es ist wichtig, dass die aktuelle Firmware der Komponente eine Überprüfung des gesamten heruntergeladenen Firmwareimages durchführt, nachdem dieser Block in nicht veränderlichem Speicher geschrieben wurde.
5.5.1.2 Daten
Tabelle 5.5-5 FIRMWARE_UPDATE_CONTENT Command Data Layout

FIRMWARE_UPDATE_CONTENT Befehlsdatenlayout.

Die Bits der FIRMWARE_UPDATE_CONTENT Daten werden in dieser Tabelle beschrieben.

Tabelle 5.5-6 FIRMWARE_UPDATE_CONTENT Befehlsdaten-Bits
Bitversatz Feld Größe BESCHREIBUNG
64 Daten Max. 52. Das zu schreibende Byte-Array. Der Host sendet in der Regel Blöcke von 4 Byte basierend auf der Produktarchitektur. Alle nicht verwendeten Bytes am Ende müssen mit 0 aufgefüllt werden.

5.5.2 Antwort

Tabelle 5.5-7 FIRMWARE_UPDATE_CONTENT Befehlsantwort-Layout

Layout der Befehlsantwort für FIRMWARE_UPDATE_CONTENT.

5.5.2.1 Sequenznummer
Tabelle 5.5-8 FIRMWARE_UPDATE_CONTENT Antwort – Sequenznummer

FIRMWARE_UPDATE_CONTENT Antwort - Sequenznummer.

Die Bits der FIRMWARE_UPDATE_CONTENT Antwort (3-0) werden in dieser Tabelle beschrieben.

Tabelle 5.5-9 FIRMWARE_UPDATE_CONTENT – Befehl – Antwortbits
Bitversatz Feld Größe BESCHREIBUNG
0 Sequenznummer 16 Dieses Feld ist die Sequenznummer, die vom Host in der Anforderung gesendet wurde.
16 Reserviert 16 Reserviert. Verwenden Sie es nicht.
5.5.2.2 Status
Tabelle 5.5-10 FIRMWARE_UPDATE_CONTENT Antwort-Status-Layout

FIRMWARE_UPDATE_CONTENT Antwortstatus-Layout.

Die Bits der FIRMWARE_UPDATE_CONTENT Antwort (7-4) werden in dieser Tabelle beschrieben.

Tabelle 5.5-11 FIRMWARE_UPDATE_OFFER – Antwort – Status-Bits
Bitversatz Feld Größe BESCHREIBUNG
0 Der Status 8 Dieser Wert gibt den Statuscode an, der von der Gerätekomponente zurückgegeben wird. Dies ist nicht bitweise und kann einer der in Tabelle 5,5-12 beschriebenen Werte sein.
8 Reserviert 24 Reserviert. Verwenden Sie es nicht.

Die möglichen Werte für das Statusbyte werden in dieser Tabelle beschrieben.

Tabelle 5.5-12 FIRMWARE_UPDATE_OFFER– Antwort – Statuscodewerte
Flagge Name BESCHREIBUNG
0x00 FIRMWARE_AKTUALISIERUNG_ERFOLGREICH Die Anforderung wurde erfolgreich abgeschlossen.
0x01 FIRMWARE_UPDATE_ERROR_PREPARE Die Komponente war nicht darauf vorbereitet, die Firmwareinhalte zu erhalten.

Wenn dieser Code verwendet wird, wird dieser Code in der Regel in einer Antwort auf den ersten Block verwendet. Zum Beispiel: Fehler im Flash-Speicher löschen.
0x02 FIRMWARE_UPDATE_FEHLER_SCHREIBEN Die Anforderung konnte die Bytes nicht schreiben.
0x03 FIRMWARE_AKTUALISIERUNGSFEHLER_ABGESCHLOSSEN Die Anforderung konnte den Swap nicht als Reaktion auf FIRMWARE_UPDATE_FLAG_LAST_BLOCK konfigurieren.
0x04 FIRMWARE_AKTUALISIERUNGSFEHLER_ÜBERPRÜFEN Fehler bei der Überprüfung des DWORD als Reaktion auf FIRMWARE_UPDATE_FLAG_VERIFY.
0x05 FIRMWARE_UPDATE_ERROR_CRC Fehler beim CRC des Firmwareimages als Reaktion auf FIRMWARE_UPDATE_FLAG_LAST_BLOCK.
0x06 FIRMWARE_UPDATE_ERROR_SIGNATURE Fehler bei der Überprüfung der Firmwaresignatur als Reaktion auf FIRMWARE_UPDATE_FLAG_LAST_BLOCK.
0x07 FIRMWARE_UPDATE_ERROR_VERSION Fehler bei der Überprüfung der Firmwareversion als Reaktion auf FIRMWARE_UPDATE_FLAG_LAST_BLOCK.
0x08 Firmware-Aktualisierungstausch ausstehend Die Firmware wurde bereits aktualisiert, und ein Tausch steht aus. Es können keine weiteren Firmwareupdatebefehle akzeptiert werden, bis das Zubehör zurückgesetzt wurde.
0x09 FIRMWARE_UPDATE_ERROR_UNGUELTIGE_ADRESSE Firmware hat eine ungültige Zieladresse innerhalb des Nachrichtendateninhalts erkannt.
0x0A FIRMWARE_UPDATE_FEHLER_KEIN_ANGEBOT Der FIRMWARE_UPDATE_OFFER Command wurde empfangen, ohne zuerst ein gültiges und akzeptiertes Firmwareupdateangebot zu erhalten.
0x0B FIRMWARE_UPDATE_ERROR_INVALID Allgemeiner Fehler für den Befehl FIRMWARE_UPDATE_OFFER, z. B. eine ungültige zutreffende Datenlänge.
5.5.2.3 Reserviert B8 - B11

Reserviert. Verwenden Sie es nicht.

5.5.2.4 Reserviert B12 - B15

Reserviert. Verwenden Sie es nicht.

6 Anhang 1: Beispiel für eine Firmware-Update-Programmierungsbefehlssequenz

6.1 Beispiel 1

Berücksichtigen Sie die folgende Gerätefirmware:

  • Primäre Komponente – Komponenten-ID 1 – Aktuelle Firmwareversion 7.0.1

  • Unterkomponente - Komponenten-ID 2 - Aktuelle Firmwareversion 12.4.54

  • Unterkomponente – Komponenten-ID 3 – Aktuelle Firmwareversion 4.4.2

  • Unterkomponente - Komponenten-ID 4 - Aktuelle Firmwareversion 23.32.9

Der Host verfügt über diese drei Firmwareimages:

  • Komponenten-ID 1 – Firmwareversion 7.1.3

  • Komponenten-ID 2 – Firmwareversion 12.4.54

  • Komponenten-ID 3 – Firmwareversion 4.5.0

Die Sequenz wird wie folgt sein:

  1. Hostangebote: Komponenten-ID 1 – Firmware-Version 7.1.3

  2. Primäre Komponente akzeptiert das Angebot

  3. Host sendet das Firmwareimage

  4. Primäre Komponente akzeptiert Firmware, überprüft sie.

  5. Hostangebote: Komponenten-ID 2 – Firmware-Version 12.4.54

  6. Primäre Komponente lehnt das Angebot ab

  7. Hostangebote: Komponenten-ID 3 - Firmware-Version 4.5.0

  8. Primäre Komponente akzeptiert das Angebot

  9. Host sendet das Firmwareimage

  10. Primäre Komponente akzeptiert Firmware, überprüft sie.

Da nicht alle Angebote abgelehnt wurden, spielt der Host alle Angebote erneut ab.

  1. Hostangebote: Komponenten-ID 1 – Firmware-Version 7.1.3

  2. Komponente lehnt ab

  3. Angebote des Hosts: Komponenten-ID 2 – Firmware-Version 12.4.54

  4. Komponente lehnt ab

  5. Hostangebote: Komponenten-ID 3 - Firmware-Version 4.5.0

  6. Komponente lehnt ab

6.2 Beispiel 2

Berücksichtigen Sie die folgende Gerätefirmware:

  • Primäre Komponente – Komponenten-ID 1 – Aktuelle Firmwareversion 7.0.1

  • Unterkomponente - Komponenten-ID 2 - Aktuelle Firmwareversion 12.4.54

  • Unterkomponente - Komponenten-ID 3 - Aktuelle Firmwareversion 7.4.2

  • Unterkomponente - Komponenten-ID 4 - Aktuelle Firmwareversion 23.32.9

Der Host verfügt über diese drei Firmwareimages:

  • Komponenten-ID 1 – Firmwareversion 8.0.0

  • Komponenten-ID 2 – Firmwareversion 12.4.54

  • Komponenten-ID 3 – Firmwareversion 9.0.0

Darüber hinaus erfordert die Implementierung, dass die Firmwareversion der Unterkomponenten nicht kleiner sein darf als die Firmwareversion, die auf der primären Komponente ausgeführt wird. Der Host ist sich dieser Anforderung nicht bewusst, und up-to ist die primäre Komponente, um diese Regel sicherzustellen.

Die Sequenz wird wie folgt sein:

  1. Hostangebote: Komponenten-ID 1 – Firmware-Version 8.0.0

  2. Primäre Komponente lehnt ab (da die Komponenten-ID 3 noch nicht aktualisiert wurde)

  3. Host-Angebote: Komponenten-ID 2 – Firmware-Version 12.4.54

  4. Primäre Komponente lehnt ab

  5. Host-Angebote: Komponenten-ID 3 – Firmware-Version 9.0.0

  6. Primäre Komponente akzeptiert Angebot

  7. Host sendet das Firmwareimage

  8. Primäre Komponente akzeptiert Firmware, überprüft sie.

Da alle Angebote nicht abgelehnt wurden, gibt der Host alle Angebote wieder.

  1. Hostangebote: Komponenten-ID 1 – Firmware-Version 8.0.0

  2. Primäre Komponente akzeptiert Angebot

  3. Host sendet das Firmwareimage

  4. Primäre Komponente akzeptiert Firmware, überprüft sie.

  5. Hostangebote: Komponenten-ID 2 – Firmware-Version 12.4.54

  6. Primäre Komponente lehnt ab

  7. Hostangebote: Komponenten-ID 3 – Firmware-Version 9.0.0

  8. Primäre Komponente lehnt ab