Superposiciones del árbol de dispositivos

Un árbol de dispositivos (DT) es una estructura de datos de nodos y propiedades con nombre que describe el hardware no detectable. Los kernels, como el kernel de Linux que se usa en Android, utilizan DT para admitir una amplia variedad de configuraciones de hardware que usan los dispositivos con Android. Los proveedores de hardware proporcionan sus propios archivos de fuente del árbol de dispositivos (DTS), que se compilan en el archivo de BLOB del árbol de dispositivos (DTB) con el compilador del árbol de dispositivos. Luego, el cargador de arranque usa estos archivos. El archivo DTB contiene un árbol de dispositivos aplanado con formato binario.

Una superposición del árbol de dispositivos (DTO) permite superponer un DTB central en el DT (un BLOB del árbol de dispositivos para la 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 el dispositivo, lo que permite 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 compilar, particionar y ejecutar.

Figura 1: Implementación típica para cargar el árbol de dispositivos en el bootloader.

  1. Para crear y escribir el DTB en la memoria flash, haz lo siguiente:

    1a. Usa el DTC (dtc) para compilar el DTS (.dts) en un DTB (.dtb). El DTB se formatea como un DT aplanado. 1b. Escribe el archivo .dtb en una ubicación accesible para el tiempo de ejecución del bootloader (se detalla a continuación).

  2. Para particionar, determina una ubicación de confianza y accesible para el tiempo de ejecución del cargador de arranque en la memoria flash para colocar .dtb. Ejemplos de ubicaciones:

    Figura 2: Coloca el archivo .dtb en una partición de inicio agregándolo a image.gz y pasándolo como"kernel" a mkbootimg.

    Figura 3: Coloca .dtb en una partición única
    (por ejemplo, la partición dtb).

  3. Para cargar el DTB y, luego, iniciar el kernel, haz lo siguiente:

    • Carga .dtb del almacenamiento a 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 cargador de arranque para cargar un DT y se proporciona una lista de términos comunes de DT. 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 formato de particiones de DTO y DTBO necesarios.