A partir del 27 de marzo de 2025, te recomendamos que uses android-latest-release
en lugar de aosp-main
para compilar y contribuir a AOSP. Para obtener más información, consulta Cambios en AOSP.
Superposiciones del árbol de dispositivos
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
Un árbol de dispositivos (DT) es una estructura de datos de nodos y propiedades nombrados que describen hardware no detectable. Los kernels, como el kernel de Linux que se usa en Android, usan DT para admitir una amplia variedad de configuraciones de hardware que usan los dispositivos con Android. Los proveedores de hardware proporcionan sus propios archivos fuente del árbol de dispositivos (DTS), que se compilan en el archivo blob del árbol de dispositivos (DTB) con el compilador del árbol de dispositivos. Luego, el bootloader los usa. El archivo DTB contiene un árbol de dispositivos aplanado con formato binario.
Una superposición del árbol de dispositivos (DTO) permite que un DTB central se superponga en el DT (un BLOB del árbol de dispositivos para superposición (DTBO)). Un bootloader que usa DTO puede mantener el DT del sistema en chip (SoC) y superponer dinámicamente un DT específico para dispositivos, agregar nodos al árbol y realizar cambios en las propiedades del árbol existente.
Actualizaciones en la versión de Android 9
En Android 9, el bootloader no debe modificar las propiedades definidas en los DTO antes de pasar el DTB unificado al kernel.
Carga un DT
Cargar un DT en el bootloader implica compilarlo, particionarlo y ejecutarlo.

Figura 1: Implementación típica para cargar el árbol de dispositivos en el bootloader.
Para crear y escribir en la DTB, haz lo siguiente:
1a. Usa el DTC (dtc
) para compilar DTS (.dts
) en una DTB (.dtb
).
La DTB tiene el formato de una DT aplanada.
1b. Escribe en la memoria flash el archivo .dtb
en una ubicación a la que el entorno de ejecución del bootloader pueda acceder (se detalla a continuación).
Para particionar, determina una ubicación confiable y accesible para el entorno de ejecución del bootloader en la memoria flash para colocar .dtb
. Ejemplos de ubicaciones:

Figura 2: Para colocar .dtb en una partición de inicio, adjúntalo a image.gz y pásalo como "kernel" a mkbootimg.
|

Figura 3: Coloca .dtb en una partición única (por ejemplo, la partición dtb).
|
Para cargar el DTB y comenzar el kernel, haz lo siguiente:
- Carga
.dtb
del almacenamiento en la memoria.
- Inicia el kernel con la dirección de memoria del DT cargado.
Próximos pasos
En esta página, se detalla un flujo de trabajo típico del bootloader para cargar un DT y se proporciona una lista de términos de DT comunes. En otras páginas de esta sección, se describe cómo implementar la compatibilidad con el bootloader, cómo compilar, verificar y optimizar tu DTO, y cómo usar varios DT. También puedes obtener detalles sobre la sintaxis de DTO y el formateo de particiones de DTO y DTBO obligatorio.
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2025-07-27 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 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)."]]