Usar varios DT

Muchos proveedores de SoC y ODM admiten el uso de varios árboles de dispositivos (DT) en un dispositivo, lo que permite que una imagen alimente varios SKU o parámetros de configuración. En esos casos, el bootloader identifica el hardware y carga el DT correspondiente durante el tiempo de ejecución:

Figura 1: Varias superposiciones del árbol de dispositivos (DTO) en el bootloader

Nota: No es obligatorio usar varios DT.

Configurar

Para agregar compatibilidad con varios DT al modelo de DTO, configura una lista de DT principales y otra lista de DT superpuestos.

Figura 2: Implementación de DTO de tiempo de ejecución para varios DT

El bootloader debe poder hacer lo siguiente:

  • Lee el ID de SoC y selecciona el DT principal correspondiente.
  • Lee el ID de la placa y selecciona el conjunto de DT de superposición según corresponda.

Solo se debe seleccionar un DT principal para usarlo durante el tiempo de ejecución. Se pueden seleccionar varios DT de superposición, pero deben ser compatibles con el DT principal elegido. El uso de varias superposiciones puede ayudar a evitar el almacenamiento de una superposición por placa dentro de la partición de DTBO y permitir que el bootloader determine el subconjunto de superposiciones requeridas según el ID de la placa (o posiblemente a través de la comprobación de los periféricos). Por ejemplo, el tablero A puede necesitar los dispositivos que agregaron las superposiciones 1, 3 y 5, mientras que el tablero B puede necesitar los dispositivos que agregaron las superposiciones 1, 4 y 5.

Partición

Para particionar, determina una ubicación confiable y accesible durante el tiempo de ejecución del bootloader en la memoria flash para almacenar los DTB y DTBO (el bootloader debe poder ubicar estos archivos en el proceso de coincidencia). Ten en cuenta que los DTB y los DTBO no pueden existir en la misma partición. Si tus DTB o DTBO están en la partición dtb/dtbo, usa la estructura de la tabla y el formato de encabezado que se detalla en Formato de partición de DTB y DTBO.

Ejecutar en el bootloader

Para ejecutarlo, haz lo siguiente:

  1. Identifica el SoC y carga el .dtb correspondiente del almacenamiento en la memoria.
  2. Identifica la placa y carga el .dtbo correspondiente del almacenamiento en la memoria.
  3. Superpone el .dtb con el .dtbo para que sea un DT combinado.
  4. Inicia el kernel con la dirección de memoria del DT fusionado.