Device Tree Overlays implementieren

Die Implementierung von Device Tree Overlays (DTOs) umfasst die Aufteilung des 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.

DT dividieren

Beginnen Sie mit der Unterteilung des DT 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.

Haupt- und Overlay-DTs erstellen

So erstellen Sie den Haupt-DT:

  1. Kompilieren Sie den .dts-Haupt-DT in eine .dtb-Datei.
  2. .dtb-Datei in eine Bootloader-Partition flashen, auf die über die Laufzeit zugegriffen werden kann (ausführlich in [Partition DTs](#partition)).

So erstellen Sie das Overlay-DT:

  1. Kompilieren Sie das Overlay-DT .dts in eine .dtbo-Datei. Während Dieses Dateiformat entspricht der .dtb-Datei als Format Flattened DT unterscheidet, unterscheidet sie sich durch die unterschiedliche Dateiendung Haupt-DT.
  2. .dtbo-Datei in eine Bootloader-Partition flashen, auf die über die Laufzeit zugegriffen werden kann (ausführlich in [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.

Partitions-DTs

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

Beispielorte für den Haupt-DT:

  • Teil der Bootpartition, der an den Kernel angehängt wird (image.gz)
  • Separate Datenübertragungs-BLOBs (.dtb) in dedizierter Partition (dtb)

Beispiele für Positionen für die Overlay-DT:

Abbildung 1. Platzieren Sie „.dtbo“ in einer eindeutigen Partition, z. B. einer dtbo-Partition.

Abbildung 2: Legen Sie .dtbo in eine ODM-Partition ab. Dies ist nur möglich, wenn Ihr Bootloader Daten aus dem Dateisystem einer ODM-Partition laden kann.

Hinweis:Die Größe des Felds Die Overlay-DT-Partition hängt vom Gerät und der des Haupt-DT-BLOBs. Normalerweise sind 8 MB mehr als ausreichend und bieten Platz bei Bedarf wachsen.

Führen Sie auf Geräten, die nahtlose (A/B) Updates unterstützen, A/B-Tests für die Haupt-DT- und Overlay-DT-Partitionen durch:

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. Startet den Kernel mit der Speicheradresse des zusammengeführten DT.

Kompatibilität aufrechterhalten

Der Haupt-DTB (vom SoC-Anbieter) wird als API-Oberfläche für DTBOs behandelt. Nachher den DT in einen SoC-gemeinsamen Teil und einen gerätespezifischen Teil, müssen Sie in Zukunft darauf achten, dass die beiden Teile miteinander kompatibel sind. Dazu gehört Folgendes:

  • DT-Definition in Haupt-DT: Beispiel: Knoten, Unterkünfte, Labels. Jede Definitionsänderung im Haupt-DT kann Änderungen im Overlay auslösen DT. 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 Zum Beispiel Partitionsname, Speicher Format.

Für Sicherheit sorgen

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 auf einem hardwaregeschützten Stamm und geht an den Bootloader, der die Integrität und Authentizität DTB- oder DTBO-Partition.
  • 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. (DTBO-Partition einen öffentlichen Schlüssel für die Partition odm freigeben.

Weitere Informationen finden Sie unter Überprüfter Start.