Gerätebaum-Overlays implementieren

Die Implementierung von Gerätebaum-Overlays (Device Tree Overlays, DTOs) umfasst das Aufteilen des Gerätebaums (Device Tree, DT), das Erstellen, Partitionieren und Ausführen. Nachdem Sie eine funktionierende Implementierung haben, müssen Sie auch die Kompatibilität zwischen den beiden Datenträgern aufrechterhalten und eine Strategie zur Gewährleistung der Sicherheit jeder Datenträgerpartition festlegen.

Gerätebaum unterteilen

Teilen Sie die DT zuerst in zwei Teile:

  • Haupt-DT Der SoC-spezifische Teil und die Standardkonfigurationen, die vom SoC-Anbieter bereitgestellt werden.
  • DT überlagern Die vom ODM/OEM bereitgestellten gerätespezifischen Konfigurationen.

Nachdem Sie die DTs geteilt haben, müssen Sie für die Kompatibilität zwischen dem Haupt-DT und dem Overlay-DT sorgen, damit das Zusammenführen des Haupt-DT und des Overlay-DT zu einem vollständigen DT für das Gerät führt. Weitere Informationen zum DTO-Format und zu den Regeln finden Sie unter DTO-Syntax. Weitere Informationen zu mehreren Datentypen finden Sie unter Mehrere Datentypen verwenden.

Haupt- und Overlay-Gerätebäume erstellen

So erstellen Sie das Haupt-DT:

  1. Kompilieren Sie den Haupt-DT .dts in eine .dtb-Datei.
  2. Flashen Sie die Datei .dtb in eine vom Bootloader zur Laufzeit zugängliche Partition (weitere Informationen finden Sie unter [Partition DTs](#partition)).

So erstellen Sie das Overlay-DT:

  1. Kompilieren Sie das Overlay-DT .dts in eine .dtbo-Datei. Dieses Dateiformat entspricht der .dtb-Datei, die als flache Datentabelle formatiert ist. Durch die unterschiedliche Dateiendung unterscheidet sie sich von der Hauptdatentabelle.
  2. Flashen Sie die Datei .dtbo in eine vom Bootloader zur Laufzeit zugängliche Partition (weitere Informationen finden Sie unter [Partition DTs](#partition)).

Weitere Informationen zum Kompilieren mit DTC und zum Überprüfen von DTO-Ergebnissen auf dem Host finden Sie unter Kompilieren und überprüfen.

Gerätebäume partitionieren

Legen Sie einen für den Bootloader in Laufzeit zugänglichen und vertrauenswürdigen Speicherort im Flash-Speicher fest, an dem .dtb und .dtbo abgelegt werden sollen.

Beispielstandorte für das Haupt-DT:

  • Teil der Bootpartition, der an den Kernel angehängt wird (image.gz)
  • DT-Blobs (.dtb) in einer separaten Partition (dtb) speichern

Beispielstandorte für das Overlay-DT:

Abbildung 1. Legen Sie .dtbo in eine ODM-Partition ab (nur, wenn Ihr Bootloader Daten aus dem Dateisystem einer ODM-Partition laden kann).

Abbildung 2. Legen Sie „.dtbo“ in eine eindeutige Partition, z. B. eine dtbo-Partition.

Hinweis:Die Größe der DT-Overlay-Partition hängt vom Gerät und von der Anzahl der Änderungen ab, die am Haupt-DT-Blob vorgenommen werden müssen. In der Regel sind 8 MB mehr als ausreichend und lassen bei Bedarf Raum für zukünftiges Wachstum.

Für Geräte, die nahtlose (A/B) Updates unterstützen, A/B-Partitionieren Sie die Haupt-DT- und Overlay-DT-Partitionen:

Abbildung 3 DTBO-Partition A/B, Beispiel 1

Abbildung 4 DTBO-Partition A/B, Beispiel 2

Im Bootloader ausführen

So führen Sie den Befehl aus:

Abbildung 5. Typische Laufzeitimplementierung für DTO im Bootloader.

  1. .dtb aus dem Speicher in den Arbeitsspeicher laden.
  2. .dtbo aus dem Speicher in den Arbeitsspeicher laden.
  3. Überlagern Sie .dtb mit .dtbo, um einen zusammengeführten DT zu erhalten.
  4. Starten Sie den Kernel mit der Speicheradresse des zusammengeführten Datentyps.

Für Kompatibilität sorgen

Die Haupt-DTB (vom SoC-Anbieter) wird als API-Oberfläche für DTBOs behandelt. Nachdem Sie den DT in einen SoC-gemeinsamen Teil und einen gerätespezifischen Teil getrennt haben, müssen Sie die beiden Teile in Zukunft gegenseitig kompatibel halten, einschließlich:

  • DT-Definition im Haupt-DT Beispiel: Knoten, Unterkünfte, Labels. Jede Definition in der Haupt-DT kann Änderungen im Overlay-DT auslösen. Wenn Sie beispielsweise einen Knotennamen im Haupt-DT korrigieren möchten, definieren Sie ein Alias-Label, das dem ursprünglichen Knotennamen zugeordnet ist, um eine Änderung des Overlay-DT zu vermeiden.
  • DT-Geschäftsstandort überlagern Beispiel: Partitionsname, Speicherformat.

Sicherheitsstrategie entwickeln

Der Bootloader muss dafür sorgen, dass das DTB oder DTBO sicher, unverändert und nicht beschädigt ist. Sie können jede Lösung verwenden, um DTB oder DTBO zu schützen, z. B. die Boot-Image-Signatur in VBoot 1.0 oder die AVB-HASH-Fußzeile (VBoot 2.0).

  • Wenn sich DTB oder DTBO in einer eindeutigen Partition befindet, können Sie diese Partition der Vertrauenskette von AVB hinzufügen. Die Vertrauenskette beginnt bei einer hardwaregeschützten Root of Trust und geht zum Bootloader, der die Integrität und Authentizität der DTB- oder DTBO-Partition überprüft.
  • Wenn sich DTB oder DTBO in einer vorhandenen Partition befindet (z. B. in der odm-Partition), sollte diese Partition in der Vertrauenskette von AVB enthalten sein. (Die DTBO-Partition kann einen öffentlichen Schlüssel mit der odm-Partition teilen.)

Weitere Informationen finden Sie unter Überprüfter Start.