À partir du 27 mars 2025, nous vous recommandons d'utiliser android-latest-release
au lieu de aosp-main
pour créer et contribuer à AOSP. Pour en savoir plus, consultez la section Modifications apportées à AOSP.
Superpositions de l'arborescence des appareils
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Un arborescence d'appareils (DT) est une structure de données composée de nœuds et de propriétés nommés qui décrivent le matériel non détectable. Les noyaux, tels que le noyau Linux utilisé dans Android, utilisent des DT pour prendre en charge un large éventail de configurations matérielles utilisées par les appareils Android. Les fournisseurs de matériel fournissent leurs propres fichiers source de l'arborescence des périphériques (DTS), qui sont compilés dans le fichier device tree blob (DTB) à l'aide du compilateur de l'arborescence des périphériques. Ces fichiers sont ensuite utilisés par le bootloader. Le fichier DTB contient un arborescence d'appareils aplatie au format binaire.
Une superposition de l'arborescence des appareils (DTO) permet de superposer un DTB central sur l'arborescence des appareils (un blob d'arborescence des appareils pour superposition (DTBO)). Un bootloader utilisant la DTO peut gérer la DT du système sur puce (SoC) et superposer dynamiquement une DT spécifique à l'appareil, en ajoutant des nœuds à l'arborescence et en modifiant les propriétés de l'arborescence existante.
Mises à jour de la version Android 9
Dans Android 9, le bootloader ne doit pas modifier les propriétés définies dans les DTO avant de transmettre le DTB unifié au noyau.
Charger un DT
Le chargement d'une DT dans le bootloader implique la création, la partitionnement et l'exécution.

Figure 1 : Implémentation type pour charger l'arborescence de l'appareil dans le bootloader.
Pour créer et flasher le DTB:
1a. Utilisez le DTC (dtc
) pour compiler les fichiers DTS (.dts
) dans un fichier DTB (.dtb
). Le fichier DTB est au format de table de données aplatie.
1b. Flashez le fichier .dtb
dans un emplacement accessible au moment de l'exécution du bootloader (décrit ci-dessous).
Pour partitionner, déterminez un emplacement de mémoire flash accessible au moment de l'exécution et sécurisé dans lequel placer .dtb
. Exemples d'adresses :

Figure 2. Placez .dtb dans une partition de démarrage en le ajoutant à image.gz et en le transmettant en tant que "kernel" à mkbootimg.
|

Figure 3. Placez le fichier .dtb dans une partition unique (par exemple, la partition dtb).
|
Pour charger le DTB et démarrer le kernel:
- Chargez
.dtb
à partir du stockage dans la mémoire.
- Démarrez le noyau à l'aide de l'adresse mémoire de la table de données chargée.
Et maintenant ?
Cette page décrit un workflow de bootloader typique pour le chargement d'une DT et fournit une liste de termes DT courants. Les autres pages de cette section expliquent comment implémenter la prise en charge du bootloader, compiler, vérifier et optimiser votre DTO, et comment utiliser plusieurs DT. Vous pouvez également obtenir des informations sur la syntaxe DTO et le formatage de partition DTO et DTBO requis.
Le contenu et les exemples de code de cette page sont soumis aux licences décrites dans la Licence de contenu. Java et OpenJDK sont des marques ou des marques déposées d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/07/27 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 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)."]]