Ab dem 27. März 2025 empfehlen wir, android-latest-release
anstelle von aosp-main
zu verwenden, um AOSP zu erstellen und Beiträge dazu zu leisten. Weitere Informationen finden Sie unter Änderungen am AOSP.
Gerätebaum-Overlays
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
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.
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.
Alle Inhalte und Codebeispiele auf dieser Seite unterliegen den Lizenzen wie im Abschnitt Inhaltslizenz beschrieben. Java und OpenJDK sind Marken oder eingetragene Marken von Oracle und/oder seinen Tochtergesellschaften.
Zuletzt aktualisiert: 2025-07-27 (UTC).
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Benötigte Informationen nicht gefunden","missingTheInformationINeed","thumb-down"],["Zu umständlich/zu viele Schritte","tooComplicatedTooManySteps","thumb-down"],["Nicht mehr aktuell","outOfDate","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Problem mit Beispielen/Code","samplesCodeIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2025-07-27 (UTC)."],[],[],null,["# Device tree overlays\n\n\u003cbr /\u003e\n\nA *device tree (DT)* is a data structure of named nodes and properties that\ndescribe non-discoverable hardware. Kernels, such as the Linux kernel\nused in Android, use DTs to support a wide range of hardware configurations used\nby Android-powered devices. Hardware vendors supply their own *device tree\nsource (DTS)* files, which are compiled into the *device tree blob (DTB)* file\nusing the *device tree compiler* . These files are then used by the\nbootloader. The DTB file contains a binary-formatted *flattened device tree*.\n\nA [*device tree overlay (DTO)*](https://lkml.org/lkml/2012/11/5/615)\nenables a central DTB to be overlaid on the DT (a *device tree blob\nfor overlay (DTBO)*). A bootloader using DTO can maintain the system-on-chip\n(SoC) DT and dynamically overlay a device-specific DT, adding nodes to the tree\nand making changes to properties in the existing tree.\n\nUpdates in Android 9 release\n----------------------------\n\nIn Android 9, the bootloader must not modify the\nproperties defined in the DTOs before passing the unified DTB to the kernel.\n\nLoad a DT\n---------\n\nLoading a DT in bootloader involves building, partitioning, and running.\n\n**Figure 1.** Typical implementation for loading device tree in bootloader.\n\n1. To create and flash the DTB:\n\n 1a. Use the DTC (`dtc`) to compile DTS (`.dts`) into a DTB (`.dtb`).\n The DTB is formatted as a flattened DT.\n 1b. Flash the `.dtb` file into a bootloader runtime-accessible location\n (detailed below).\n2. To partition, determine a bootloader runtime-accessible and trusted location\n in flash memory to put `.dtb`. Example locations:\n\n \u003cbr /\u003e\n\n |-----------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------|\n | **Figure 2.** Put .dtb in a boot partition by appending to image.gz and passing as \"kernel\" to mkbootimg. | **Figure 3.** Put .dtb in a unique partition (for example, dtb partition). |\n\n \u003cbr /\u003e\n\n3. To load the DTB and start the kernel:\n\n - Load `.dtb` from storage into memory.\n - Start kernel using the memory address of the loaded DT.\n\nWhat's next?\n------------\n\nThis page details a typical bootloader workflow for loading a DT and provides\na list of common DT terms. Other pages in this section describe how to\n[implement bootloader support](/docs/core/architecture/dto/implement), how to\n[compile](/docs/core/architecture/dto/compile), verify, and\n[optimize your DTO](/docs/core/architecture/dto/optimize), and how to\n[use multiple DTs](/docs/core/architecture/dto/multiple). You can\nalso get details on [DTO syntax](/docs/core/architecture/dto/syntax) and\nrequired\n[DTO and DTBO partition formatting](/docs/core/architecture/dto/partitions)."]]