Gerätebaum-Overlays

Ein Gerätebaum (DT) ist eine Datenstruktur benannter 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 stellen ihre eigenen Device Tree Source (DTS) -Dateien bereit, 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 Device Tree Overlay (DTO) ermöglicht die Überlagerung eines zentralen Device Tree Blobs (DTB) über den Gerätebaum. Ein Bootloader, der DTO verwendet, kann den SoC-DT (System-on-Chip) verwalten und einen gerätespezifischen DT dynamisch überlagern, indem er Knoten zum Baum hinzufügt und Änderungen an Eigenschaften im vorhandenen Baum vornimmt.

DTBO Gerätebaum-Blob für Overlay

Updates 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 übergibt.

Laden Sie einen Gerätebaum

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 den Gerätebaum-Blob:

    1a. Verwenden Sie den Gerätebaum-Compiler ( dtc >), um die Gerätebaumquelle ( .dts ) in einen Gerätebaum-Blob ( .dtb ) zu kompilieren. Der Gerätebaum-Blob ist als abgeflachter Gerätebaum formatiert. 1b. Flashen Sie die .dtb Datei an einem Speicherort, auf den der Bootloader zur Laufzeit zugreifen kann (siehe unten).

  2. Bestimmen Sie zum Partitionieren einen zur Bootloader-Laufzeit zugänglichen und vertrauenswürdigen Speicherort im Flash-Speicher, an dem .dtb abgelegt werden soll. Beispielstandorte:

    Boot-Partition
    Abbildung 2. Fügen Sie .dtb in die Boot-Partition ein, indem Sie es an image.gz anhängen und als „ kernel “ an mkbootimg übergeben.
    Einzigartige Partition
    Abbildung 3. Legen Sie .dtb in einer eindeutigen Partition ab (z. B. dtb Partition).
  3. So laden Sie den Gerätebaum-Blob und starten den Kernel:

    • Laden Sie .dtb vom Speicher in den Speicher.
    • Starten Sie den Kernel mit der Speicheradresse des geladenen DT.

Was kommt als nächstes?

Auf dieser Seite wird ein typischer Bootloader-Workflow zum Laden eines DT beschrieben und eine Liste allgemeiner DT-Begriffe bereitgestellt. Auf anderen Seiten in diesem Abschnitt wird beschrieben, wie Sie die Bootloader-Unterstützung implementieren , wie Sie Ihr DTO kompilieren , überprüfen und optimieren und wie Sie mehrere DTs verwenden . Sie können auch Details zur DTO-Syntax und zur erforderlichen DTO/DTBO-Partitionsformatierung erhalten.