La implementación de superposiciones del árbol de dispositivos (DTO) implica dividir el árbol de dispositivos (DT), crear, la partición y la ejecución. Una vez que tengas una implementación funcional, también debes mantener la compatibilidad entre los dos DT y determinar una estrategia para garantizar la de cada partición de la DT.
Divide la DT
Empieza por dividir la DT en dos partes:
- DT principal. La parte exclusiva para SoC y las configuraciones predeterminadas que ofrece el proveedor del SoC.
- Overlay DT: Las configuraciones específicas del dispositivo que proporciona ODM/OEM
Después de dividir los DT, debes garantizar la compatibilidad entre los DT y DT de superposición para que la combinación de la DT principal y la DT superpuesta dé como resultado una DT para el dispositivo. Para obtener más información sobre el formato y las reglas de DTO, consulta Sintaxis de DTO. Para obtener detalles varios DT, consulta Varias DT.
Cómo compilar DT principales y superpuestos
Para compilar la DT principal, haz lo siguiente:
- Compila el
.dts
de DT principal en un archivo.dtb
. - Escribe el archivo
.dtb
en la memoria flash de una partición accesible por el tiempo de ejecución del bootloader (detallados en [DT de particiones](#partition)).
Para crear la DT de superposición, sigue estos pasos:
- Compila la superposición de DT
.dts
en un archivo.dtbo
. Mientras que este formato de archivo es el mismo que el archivo.dtb
con el mismo formato DT acoplada, la diferente extensión de archivo la distingue de la DT principal - Escribe el archivo
.dtbo
en la memoria flash de una partición accesible por el tiempo de ejecución del bootloader (detallados en [DT de particiones](#partition)).
Para obtener detalles sobre la compilación con DTC y la verificación de los resultados de la DTO en el host, consulta Compila y verifica.
DT de partición
Determina una ubicación de confianza y acceso para el tiempo de ejecución del bootloader en Flash
memoria para poner .dtb
y .dtbo
.
Ejemplos de ubicaciones para el DT principal:
- Parte de la partición de inicio, agregada al kernel (
image.gz
) - BLOB de DT separados (
.dtb
) en una partición dedicada (dtb
)
Ejemplos de ubicaciones para la DT superpuesta:
Figura 1: Coloca .dtbo en una partición única, como una partición dtbo.
Figura 2: Coloca el archivo .dtbo en una partición odm (haz esto solo si tu bootloader tiene la capacidad de cargar datos desde el sistema de archivos de una partición odm).
Nota: El tamaño de La partición de DT superpuesta depende del dispositivo y la cantidad de cambios necesarios en parte superior del BLOB de DT principal. Por lo general, 8 MB son más que suficientes y permiten crecer en el futuro si es necesario.
Para dispositivos compatibles actualizaciones (A/B) sin inconvenientes, A/B las Las particiones de la DT principal y la DT superpuesta:
Figura 3: Partición de DTBO A/B, ejemplo 1.
Figura 4: Partición de DTBO A/B, ejemplo 2.
Ejecutar en el bootloader
Para ejecutarlo, haz lo siguiente:
Figura 5: Implementación típica del tiempo de ejecución para DTO en el bootloader.
- Carga
.dtb
del almacenamiento en la memoria. - Carga
.dtbo
del almacenamiento en la memoria. - Superpone
.dtb
con.dtbo
para que sea una DT combinada. - Inicia el kernel a partir de la dirección de memoria de la DT combinada.
Cómo mantener la compatibilidad
La DTB principal (del proveedor de SoC) se trata como una plataforma de API para los DTBO. Después del la separación de la DT en una parte común de SoC y una parte específica del dispositivo, debes mantener las dos partes mutuamente compatibles en el futuro, incluidas las siguientes:
- Definición de la DT en la DT principal. Por ejemplo, nodos, propiedades, con etiquetas de recursos. Cualquier cambio en la definición de la DT principal podría activar cambios en la superposición. DT Por ejemplo, para corregir el nombre de un nodo en la DT principal, define un "alias" etiqueta que asigna el nombre del nodo original (para evitar el cambio de la DT de superposición).
- Ubicación de la tienda de DT superpuesta. Por ejemplo, nombre de partición, almacenamiento de un conjunto de datos tengan un formato común.
Garantiza la seguridad
El bootloader debe garantizar que la DTB o DTBO sea segura, no se modifique ni dañe. Puedes usar cualquier solución para proteger DTB o DTBO, por ejemplo, Imagen de arranque firma en VBoot 1.0 o AVB Pie de página de HASH (VBoot 2.0).
- Si DTB o DTBO está en una partición única, puedes agregarla al o la cadena de confianza del AVB. La cadena de confianza comienza desde una raíz protegida por hardware la confianza y va al bootloader, que verifica la integridad y autenticidad de una partición de DTB o DTBO.
- Si DTB o DTBO está en una partición existente (como
odm
partición), esta debe estar en la cadena de confianza de AVB. (partición de DTBO podría compartir una clave pública con la particiónodm
).
Para obtener más información, consulta Verificado Arranque.