Implementierung von DTOs

Die Implementierung von DTO umfasst das Teilen des Gerätebaums, das Erstellen, Partitionieren und Ausführen. Nachdem Sie über eine funktionierende Implementierung verfügen, müssen Sie außerdem die Kompatibilität zwischen den beiden DTs aufrechterhalten und eine Strategie zur Gewährleistung der Sicherheit jeder DT-Partition festlegen.

Teilen des DT

Teilen Sie zunächst den Gerätebaum in zwei (2) Teile:

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

Nach der Aufteilung der Gerätebäume müssen Sie die Kompatibilität zwischen Haupt-BMK und Overlay-BMK sicherstellen, damit durch die Zusammenführung von Haupt-BMK und Overlay-BMK ein vollständiges BMK für das Gerät entsteht. Einzelheiten zum DTO-Format und zu den Regeln finden Sie unter DTO-Syntax . Einzelheiten zu mehreren Gerätebäumen finden Sie unter Mehrere DTs .

Erstellen von Haupt- und Overlay-DTs

So erstellen Sie das Haupt-DT:

  1. Kompilieren Sie die Haupt-DT .dts in eine .dtb Datei.
  2. Flashen Sie .dtb Datei in eine Bootloader-Laufzeit-zugängliche Partition (siehe unten).

So erstellen Sie das Overlay-DT:

  1. Kompilieren Sie Overlay-DT .dts in eine .dtbo Datei. Obwohl dieses Dateiformat mit der als abgeflachter Gerätebaum formatierten .dtb Datei identisch ist, unterscheidet es sich durch die andere Dateierweiterung vom Haupt-DT.
  2. Flashen Sie .dtbo Datei in eine Bootloader-Laufzeitpartition, auf die zugegriffen werden kann (wie unten beschrieben).

Einzelheiten zum Kompilieren mit DTC und zum Überprüfen der DTO-Ergebnisse auf dem Host finden Sie unter Kompilieren und Überprüfen .

Partitionierung von DTs

Bestimmen Sie einen zur Bootloader-Laufzeit zugänglichen und vertrauenswürdigen Speicherort im Flash-Speicher, um .dtb und .dtbo abzulegen.

Beispielstandorte für die Haupt-DT:

  • Teil der Boot-Partition, an den Kernel angehängt ( image.gz ).
  • Separate DT-Blobs ( .dtb ) in einer dedizierten Partition ( dtb ).

Beispielstandorte für das Overlay-DT:

Einzigartige Partition
Abbildung 1. Legen Sie .dtbo in einer eindeutigen Partition ab, z. B. dtbo Partition.
ODM-Partition
Abbildung 2. .dtbo in die odm Partition einfügen (tun Sie dies nur, wenn Ihr Bootloader in der Lage ist, Daten aus dem Dateisystem der odm Partition zu laden).

Hinweis: Die Größe der Overlay-DT-Partition hängt vom Gerät und der Menge der Änderungen ab, die zusätzlich zum Haupt-DT-Blob erforderlich sind. Normalerweise sind 8 MB mehr als ausreichend und bieten bei Bedarf Raum für zukünftiges Wachstum.

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

Beispiel 1
Abbildung 3. DTBO-Partition A/B, Beispiel 1.
Beispiel 2
Abbildung 4. DTBO-Partition A/B, Beispiel 2.

Läuft im Bootloader

Laufen:

Abbildung 5. Typische Laufzeitimplementierung für die Gerätebaumüberlagerung im Bootloader.
  1. Laden Sie .dtb vom Speicher in den Speicher.
  2. Laden Sie .dtbo vom Speicher in den Speicher.
  3. Überlagern Sie .dtb mit .dtbo , um ein zusammengeführtes DT zu erhalten.
  4. Starten Sie den Kernel mit der Speicheradresse des zusammengeführten DT.

Kompatibilität wahren

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

  • BMK-Definition im Haupt-BMK (z. B. Knoten, Eigenschaften, Labels) . Jede Definitionsänderung im Haupt-DT könnte Änderungen im Overlay-DT auslösen. Um beispielsweise einen Knotennamen im Haupt-DT zu korrigieren, definieren Sie eine „Alias“-Beschriftung, die dem ursprünglichen Knotennamen zugeordnet ist (um die Änderung des Overlay-DT zu vermeiden).
  • Overlay-DT-Speicherort (z. B. Partitionsname, Speicherformat) .

Sicherheit gewährleisten

Der Bootloader muss sicherstellen, dass das DTB/DTBO sicher, unverändert und unbeschädigt ist. Sie können jede Lösung zum Sichern von DTB/DTBO verwenden, zum Beispiel die Boot-Image-Signatur in VBoot 1.0 oder die AVB-HASH-Fußzeile (VBoot 2.0).

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

Einzelheiten finden Sie unter Verifizierter Start .