Un árbol de dispositivos (DT) es una estructura de datos de nodos y propiedades con nombre que describen el 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 una 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 un DT aplanado. 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, una partición de 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.
- Carga
¿Qué sigue?
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.