Ein Gerätebaum (DT) ist eine Datenstruktur mit benannten Knoten und Eigenschaften, die nicht auffindbare Hardware beschreiben. Kernel wie der Linux-Kernel, der in Android verwendet wird, nutzen Gerätebäume, um eine Vielzahl von Hardwarekonfigurationen zu unterstützen, die auf Android-Geräten verwendet werden. Hardwareanbieter stellen ihre eigenen Gerätebaum-Quelldateien (Device Tree Source, DTS) bereit, die mit dem Gerätebaum-Compiler in die Gerätebaum-Blobdatei (Device Tree Blob, DTB) kompiliert werden. Diese Dateien werden dann vom Bootloader verwendet. Die DTB-Datei enthält einen flachen Gerätebaum im Binärformat.
Mit einem Gerätebaum-Overlay (Device Tree Overlay, DTO) kann ein zentraler DTB auf den Gerätebaum (ein Gerätebaum-Blob für Overlays (Device Tree Blob Overlay, DTBO)) gelegt werden. Ein Bootloader mit DTO kann den Gerätebaum für das System-on-Chip (SoC) verwalten und dynamisch einen gerätespezifischen Gerätebaum überlagern, dem Knoten hinzufügen und Änderungen an den Eigenschaften im vorhandenen Baum vornehmen.
Updates in der Android 9-Version
Unter Android 9 darf der Bootloader die in den DTOs definierten Eigenschaften nicht ändern, bevor er das einheitliche DTB an den Kernel weitergibt.
Gerätebaum laden
Zum Laden eines Gerätebaums in den Bootloader gehören das Erstellen, Partitionieren und Ausführen.
Abbildung 1: Typische Implementierung zum Laden des Gerätebaums im Bootloader.
So erstellen und flashen Sie das DTB:
1a. Verwende den DTC (
dtc
), um DTS (.dts
) in ein DTB (.dtb
) zu kompilieren. Das DTB ist als flacher Gerätebaum formatiert. 1b. Flashe die.dtb
-Datei an einen für den Bootloader während der Laufzeit erreichbaren Speicherort (siehe unten).Lege für
.dtb
in einem Flash-Speicher einen Speicherort fest, der für den Bootloader während der Laufzeit erreichbar ist und der vertrauenswürdig ist. Beispieladressen:Abbildung 2: Platzieren Sie .dtb in einer Boot-Partition, indem Sie sie an image.gz anhängen und als „kernel“ an mkbootimg übergeben.
Abbildung 3: Lege die DTB-Datei in einer speziellen Partition ab
(z. B. einer DTB-Partition).So laden Sie den DTB und starten den Kernel:
- Lade
.dtb
vom Speicherort in den Arbeitsspeicher. - Starte den Kernel mit der Adresse des Arbeitsspeichers, in dem sich der geladene Gerätebaum befindet.
- Lade
Wie geht es weiter?
Auf dieser Seite wird ein typischer Bootloader-Workflow zum Laden eines DT beschrieben und eine Liste gängiger DT-Begriffe bereitgestellt. Auf den anderen Seiten in diesem Abschnitt wird beschrieben, wie Sie Bootloader-Unterstützung implementieren, wie Sie Ihre DTO kompilieren, überprüfen und optimieren und wie Sie mehrere DTs verwenden. Außerdem finden Sie Informationen zur DTO-Syntax und zur erforderlichen Formatierung von DTO- und DTBO-Partitionen.