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:
- Identifica el SoC y carga el .dtb correspondiente desde almacenar en la memoria.
- Identifica la placa y carga los datos
.dtbo
del almacenamiento a la memoria. - Superpone la
.dtb
con la.dtbo
para combinarla. DT - Inicia el kernel a partir de la dirección de memoria de la DT combinada.