Muchos proveedores de SoC y ODM admiten el uso de múltiples DT en un dispositivo, lo que permite que una imagen alimente múltiples SKU/configuraciones. En tales casos, el gestor de arranque identifica el hardware y carga el DT correspondiente en tiempo de ejecución:
Nota: No es obligatorio utilizar varios DT.
Configurando
Para agregar soporte para múltiples DT al modelo DTO, configure una lista de DT principales y otra lista de DT superpuestas.
El gestor de arranque debería poder:
- Lea el ID del SoC y seleccione el árbol de dispositivos principal correspondiente, y
- Lea la ID de la placa y seleccione el conjunto de árboles de dispositivos superpuestos en consecuencia.
Sólo se debe seleccionar un IME principal para su uso en tiempo de ejecución. Se pueden seleccionar varios DT superpuestos, pero deben ser compatibles con el DT principal elegido. El uso de múltiples superposiciones puede ayudar a evitar almacenar una superposición por placa dentro de la partición DTBO y permitir que el gestor de arranque determine el subconjunto de superposiciones requeridas en función de la ID de la placa (o posiblemente probando los periféricos). Por ejemplo, la placa A puede necesitar los dispositivos agregados por las superposiciones 1, 3 y 5, mientras que la placa B puede necesitar los dispositivos agregados por las superposiciones 1, 4 y 5.
Fraccionamiento
Para particionar, determine una ubicación confiable y accesible en tiempo de ejecución del cargador de arranque en la memoria flash para almacenar los DTB y DTBO (el cargador de arranque debe poder ubicar estos archivos en el proceso de coincidencia). Tenga en cuenta que los DTB y los DTBO no pueden existir en la misma partición. Si sus DTB/DTBO están en la partición dtb
/ dtbo
, utilice la estructura de tabla y el formato de encabezado que se detallan en Formato de partición DTB/DTBO .
Ejecutando en el gestor de arranque
Correr:
- Identifique el SoC y cargue el .dtb correspondiente desde el almacenamiento a la memoria.
- Identifique la placa y cargue el
.dtbo
correspondiente desde el almacenamiento a la memoria. - Superponga el
.dtb
con el.dtbo
para que sea un DT fusionado. - Inicie el kernel dada la dirección de memoria del DT fusionado.