Gerätebaum-Overlays

Ein Gerätebaum (DT) ist eine Datenstruktur aus benannten Knoten und Eigenschaften, die nicht erkennbare Hardware beschreiben. Kernel, wie der in Android verwendete Linux-Kernel, verwenden DTs, um eine Vielzahl von Hardwarekonfigurationen zu unterstützen, die von Android-Geräten verwendet werden. Hardwareanbieter liefern ihre eigenen Device Tree Source (DTS) -Dateien, die mit dem Device Tree Compiler in die Device Tree Blob (DTB) -Datei kompiliert werden. Diese Dateien werden dann vom Bootloader verwendet. Die DTB-Datei enthält einen binär formatierten , abgeflachten Gerätebaum .

Ein Gerätebaum-Overlay (DTO) ermöglicht das Überlagern eines zentralen Gerätebaum-Blobs (DTB) auf dem Gerätebaum. Ein Bootloader, der DTO verwendet, kann das System-on-Chip (SoC) DT verwalten und ein gerätespezifisches DT dynamisch überlagern, Knoten zum Baum hinzufügen und Änderungen an Eigenschaften im vorhandenen Baum vornehmen.

DTBO Gerätebaum-Blob für Overlay

Aktualisierungen in der Android 9-Version

In Android 9 darf der Bootloader die in den Gerätebaum-Overlays definierten Eigenschaften nicht ändern, bevor er den einheitlichen Gerätebaum-Blob an den Kernel weitergibt.

Laden eines Gerätebaums

Das Laden eines Gerätebaums im Bootloader umfasst das Erstellen, Partitionieren und Ausführen.

Abbildung 1. Typische Implementierung zum Laden des Gerätebaums im Bootloader.
  1. So erstellen und flashen Sie das Gerätebaum-Blob:

    1a. Verwenden Sie den Gerätebaum-Compiler ( dtc >), um die Gerätebaumquelle ( .dts ) in ein Gerätebaum-BLOB ( .dtb ) zu kompilieren. Das Gerätestruktur-Blob ist als vereinfachte Gerätestruktur formatiert. 1b. Flashen Sie die .dtb -Datei in einen Speicherort, auf den die Bootloader-Laufzeit zugreifen kann (siehe unten).

  2. Bestimmen Sie zum Partitionieren einen für die Bootloader-Laufzeit zugänglichen und vertrauenswürdigen Speicherort im Flash-Speicher, um .dtb . Beispielstandorte:

    Boot-Partition
    Abbildung 2. Fügen Sie .dtb in die Bootpartition ein, indem Sie es an image.gz und als " kernel " an mkbootimg .
    Eindeutige Partition
    Abbildung 3. Legen Sie .dtb in eine eindeutige Partition (z. B. dtb Partition).

  3. So laden Sie das Gerätebaum-Blob und starten den Kernel:

    3a. Laden .dtb aus dem Speicher in den Speicher. 3b. Starten Sie den Kernel unter Verwendung der Speicheradresse des geladenen DT.

Was kommt als nächstes?

Diese Seite beschreibt einen typischen Bootloader-Workflow zum Laden eines DT und bietet eine Liste gängiger DT-Begriffe. Auf anderen Seiten in diesem Abschnitt wird beschrieben, wie Sie Bootloader-Unterstützung implementieren , wie Sie Ihr DTO kompilieren , verifizieren und optimieren und wie Sie mehrere DTs verwenden . Sie können auch Einzelheiten zur DTO-Syntax und zur erforderlichen DTO/DTBO-Partitionsformatierung abrufen .