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 potencie varios SKU o configuraciones. En tales casos, el bootloader identifica el hardware y carga el DT correspondiente en 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 DTO, configura una lista de los principales DT y otra lista de DT de superposición.

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

El bootloader debería 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 una DT principal para usarla en el tiempo de ejecución. Múltiples DT de superposición pero deben ser compatibles con el DT principal elegido. Usando varias superposiciones pueden ayudar a evitar almacenar una superposición por placa en el DTBO. y habilita el bootloader para determinar el subconjunto de superposiciones requeridas. según el ID de la placa (o tal vez sondeando los periféricos). Para Por ejemplo, la placa A puede necesitar los dispositivos agregados por las superposiciones 1, 3 y 5, mientras que Es posible que la placa B necesite los dispositivos que agregaron las superposiciones 1, 4 y 5.

Partición

Para particionar, determina una ubicación de confianza y accesible para el tiempo de ejecución del bootloader en memoria flash para almacenar los DTB y DTBO (el bootloader debe poder localizar estos archivos en el proceso de segmentación). Ten en cuenta que las DTB y DTBO existen en la misma partición. Si tus DTB o DTBO están en el Partición dtb/dtbo, usa la estructura de la tabla y el encabezado formato detallado en DTB y DTBO formato de partición.

Ejecutar en el bootloader

Para ejecutarlo, haz lo siguiente:

  1. Identifica el SoC y carga el .dtb correspondiente desde almacenar en la memoria.
  2. Identifica la placa y carga los datos .dtbo del almacenamiento a la memoria.
  3. Superpone la .dtb con la .dtbo para combinarla. DT
  4. Inicia el kernel a partir de la dirección de memoria de la DT combinada.