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 DTs, um eine Vielzahl von Hardwarekonfigurationen zu unterstützen, die auf Android-Geräten verwendet werden. Hardwareanbieter stellen eigene DTS-Dateien (Device Tree Source) bereit, die mit dem Device Tree Blob in die DTB-Datei kompiliert werden. Diese Dateien werden dann vom Bootloader verwendet. Die DTB-Datei enthält einen flachen Device Tree im Binärformat.
Mit einem Device Tree Overlay (DTO) kann ein zentraler DTB auf den DT (ein Device Tree Blob for Overlay (DTBO)) überlagert werden. Ein Bootloader mit DTO kann den DT des System-on-Chips (SoC) verwalten und dynamisch einen gerätespezifischen DT überlagern, dem Baum Knoten hinzufügen und Änderungen an den Eigenschaften im vorhandenen Baum vornehmen.
Updates in Android 9
In Android 9 darf der Bootloader die in den DTOs definierten Eigenschaften nicht ändern, bevor er das einheitliche DTB an den Kernel weitergibt.
Datenübertragung laden
Zum Laden eines Datenträgers im Bootloader müssen Sie ihn 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 DTC (
dtc
), um DTS (.dts
) in eine DTB (.dtb
) zu kompilieren. Die DTB ist als flacher Datentyp formatiert. 1b. Flashen Sie die Datei.dtb
an einen vom Bootloader aus während der Laufzeit zugänglichen Speicherort (siehe unten).Legen Sie zum Partitionieren einen für den Bootloader zur Laufzeit zugänglichen und vertrauenswürdigen Speicherort im Flash-Speicher fest, an dem
.dtb
abgelegt werden soll. Beispieladressen:Abbildung 2. Platzieren Sie .dtb in einer Bootpartition, indem Sie es an image.gz anhängen und als „kernel“ an mkbootimg übergeben.
Abbildung 3 Speichern Sie die Datei .dtb in einer eindeutigen Partition
(z. B. dtb-Partition).So laden Sie das DTB und starten den Kernel:
.dtb
aus dem Speicher in den Arbeitsspeicher laden.- Starten Sie den Kernel mit der Speicheradresse des geladenen Datentyps.
Wie geht es weiter?
Auf dieser Seite wird ein typischer Bootloader-Workflow zum Laden eines Datenträgers beschrieben und eine Liste gängiger DT-Begriffe bereitgestellt. Auf anderen Seiten in diesem Abschnitt wird beschrieben, wie Sie die Bootloader-Unterstützung implementieren, das DTO kompilieren, prüfen und optimieren und mehrere DTs verwenden. Außerdem finden Sie hier Informationen zur DTO-Syntax und zur erforderlichen Formatierung von DTO- und DTBO-Partitionen.