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ätebaumquellendateien (DTS) bereit, die mit dem Gerätebaum-Compiler in die Gerätebaum-Blobdatei (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. Verwenden Sie den DTC (
dtc
), um DTS (.dts
) in ein DTB (.dtb
) zu kompilieren. Das DTB ist als flacher Gerätebaum formatiert. 1b. Flashen Sie die.dtb
-Datei an einen für den Bootloader während der Laufzeit zugänglichen Speicherort (siehe unten).Legen Sie für die Partitionierung in einem Flash-Speicher einen Speicherort fest, der für den Bootloader während der Laufzeit erreichbar ist und der vertrauenswürdig ist.
.dtb
Beispieladressen:Abbildung 2: Legen Sie die .dtb-Datei in einer Boot-Partition ab, indem Sie sie an image.gz anhängen und als „kernel“ an mkbootimg übergeben.
Abbildung 3: Legen Sie die DTB-Datei in einer speziellen Partition ab
(z. B. einer DTB-Partition).So laden Sie den DTB und starten den Kernel:
- Laden Sie
.dtb
vom Speicherort in den Arbeitsspeicher. - Starten Sie den Kernel mit der Speicheradresse des geladenen Gerätebaums.
- Laden Sie
Und jetzt?
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.