Superposiciones de árbol de dispositivos

Un árbol de dispositivos (DT) es una estructura de datos de nodos con nombre y propiedades que describen hardware no detectable. Los kernels, como el kernel de Linux utilizado en Android, utilizan DT para admitir una amplia gama de configuraciones de hardware utilizadas por los dispositivos con Android. Los proveedores de hardware proporcionan sus propios archivos Device Tree Source (DTS) , que se compilan en el archivo Device Tree Blob (DTB) mediante el Device Tree Compiler . Estos archivos luego son utilizados por el gestor de arranque. El archivo DTB contiene un árbol de dispositivos aplanado con formato binario.

Una superposición de árbol de dispositivos (DTO) permite superponer un blob de árbol de dispositivos central (DTB) en el árbol de dispositivos. Un gestor de arranque que utiliza DTO puede mantener el DT del sistema en chip (SoC) y superponer dinámicamente un DT específico del dispositivo, agregando nodos al árbol y realizando cambios en las propiedades del árbol existente.

DTBO Blob de árbol de dispositivos para superposición

Actualizaciones en la versión de Android 9

En Android 9, el gestor de arranque no debe modificar las propiedades definidas en las superposiciones del árbol de dispositivos antes de pasar el blob del árbol de dispositivos unificado al kernel.

Cargar un árbol de dispositivos

Cargar un árbol de dispositivos en el gestor de arranque implica construir, particionar y ejecutar.

Figura 1. Implementación típica para cargar el árbol de dispositivos en el gestor de arranque.
  1. Para crear y actualizar el blob del árbol de dispositivos:

    1a. Utilice el compilador del árbol de dispositivos ( dtc >) para compilar el origen del árbol de dispositivos ( .dts ) en un blob del árbol de dispositivos ( .dtb ). El blob del árbol de dispositivos tiene el formato de árbol de dispositivos aplanado. 1b. Actualice el archivo .dtb en una ubicación accesible en tiempo de ejecución del cargador de arranque (que se detalla a continuación).

  2. Para particionar, determine una ubicación confiable y accesible en tiempo de ejecución del cargador de arranque en la memoria flash para colocar .dtb . Ubicaciones de ejemplo:

    Partición de arranque
    Figura 2. Coloque .dtb en la partición de arranque agregándolo a image.gz y pasándolo como " kernel " a mkbootimg .
    Partición única
    Figura 3. Coloque .dtb en una partición única (por ejemplo, partición dtb ).
  3. Para cargar el blob del árbol de dispositivos e iniciar el kernel:

    • Cargue .dtb desde el almacenamiento a la memoria.
    • Inicie el kernel utilizando la dirección de memoria del DT cargado.

¿Que sigue?

Esta página detalla un flujo de trabajo típico del cargador de arranque para cargar un DT y proporciona una lista de términos DT comunes. Otras páginas de esta sección describen cómo implementar la compatibilidad con el cargador de arranque , cómo compilar , verificar y optimizar su DTO y cómo utilizar múltiples DT . También puede obtener detalles sobre la sintaxis de DTO y el formato de partición DTO/DTBO requerido.