La implementación de DTO implica dividir el árbol de dispositivos, construir, particionar y ejecutar. Después de tener una implementación en funcionamiento, también debe mantener la compatibilidad entre los dos DT y determinar una estrategia para garantizar la seguridad de cada partición de DT.
Dividiendo el DT
Empiece por dividir el árbol de dispositivos en dos (2) partes:
- DT principal . La parte exclusiva de SoC y las configuraciones predeterminadas, proporcionadas por el proveedor de SoC.
- Superposición DT . Las configuraciones específicas del dispositivo, proporcionadas por ODM / OEM.
Después de dividir los árboles de dispositivos, debe garantizar la compatibilidad entre el DT principal y el DT superpuesto para que la fusión del DT principal y el DT superpuesto dé como resultado un DT completo para el dispositivo. Para obtener detalles sobre el formato y las reglas de DTO , consulte Sintaxis de DTO . Para obtener detalles sobre varios árboles de dispositivos, consulte Varios DT .
Creación de DT principales y superpuestos
Para construir el DT principal:
- Compile
.dts
DT principales en.dtb
archivo.dtb
. -
.dtb
archivo.dtb
en una partición accesible en tiempo de ejecución del cargador de arranque (que se detalla a continuación).
Para construir el DT superpuesto:
- Compile DT de superposición
.dts
en.dtbo
archivo.dtbo
. Si bien este formato de archivo es el mismo que el archivo.dtb
formateado como un árbol de dispositivo plano, la extensión de archivo diferente lo distingue del DT principal. -
.dtbo
archivo.dtbo
en una partición accesible en tiempo de ejecución del cargador de arranque (como se detalla a continuación).
Para obtener detalles sobre la compilación con DTC y la verificación de los resultados de DTO en el host, consulte Compilación y verificación .
Partición de DT
Determine una ubicación confiable y accesible en tiempo de ejecución del cargador de arranque en la memoria flash para colocar .dtb
y .dtbo
.
Ubicaciones de ejemplo para el DT principal:
- Parte de la partición de arranque, adjunta al kernel (
image.gz
). -
.dtb
DT separados (.dtb
) en la partición dedicada (dtb
).
Ubicaciones de ejemplo para la superposición DT:
Partición única |
---|

.dtbo
en una partición única, por ejemplo, la partición dtbo
. Partición ODM |
---|

.dtbo
en la partición odm
(haga esto solo si su cargador de arranque tiene la capacidad de cargar datos desde el sistema de archivos de la partición odm
).Nota: El tamaño de la partición DT superpuesta depende del dispositivo y la cantidad de cambios necesarios en la parte superior del blob DT principal. Por lo general, 8 MB es más que suficiente y deja espacio para crecer en el futuro si es necesario.
Para dispositivos que admiten actualizaciones integradas (A / B) , A / B las particiones DT principales y superpuestas DT:
Ejemplo 1 |
---|

Ejemplo 2 |
---|

Ejecutando en el cargador de arranque
Correr:

- Cargue
.dtb
del almacenamiento en la memoria. - Cargue
.dtbo
del almacenamiento a la memoria. -
.dtb
con.dtbo
para que sea un DT combinado. - Inicie el kernel dada la dirección de memoria del DT combinado.
Mantener la compatibilidad
El DTB principal (del proveedor de SoC) se trata como una superficie API para DTBO. Después de separar el árbol de dispositivos en una parte común de SoC y una parte específica del dispositivo, debe mantener las dos partes compatibles entre sí en el futuro, que incluyen:
- Definición de DT en DT principal (por ejemplo, nodos, propiedades, etiquetas) . Cualquier cambio de definición en el DT principal podría desencadenar cambios en el DT superpuesto. Por ejemplo, para corregir un nombre de nodo en el DT principal, defina una etiqueta de "alias" que se corresponda con el nombre del nodo original (para evitar el cambio del DT superpuesto).
- Superposición de la ubicación de la tienda DT (por ejemplo, nombre de la partición, formato de la tienda) .
Garantizar la seguridad
El cargador de arranque debe garantizar que DTB / DTBO sea seguro, sin modificaciones y sin daños. Puede utilizar cualquier solución para proteger DTB / DTBO, por ejemplo, la firma de la imagen de arranque en VBoot 1.0 o el pie de página AVB HASH (VBoot 2.0).
- Si DTB / DTBO está en una partición única, puede agregar esa partición a la cadena de confianza de AVB. La cadena de confianza comienza desde una raíz de confianza protegida por hardware y va al cargador de arranque, que verifica la integridad y autenticidad de la partición DTB / DTBO.
- Si DTB / DTBO está en una partición existente (como la partición
odm
), esa partición debe estar en la cadena de confianza de AVB. (La partición DTBO podría compartir una clave pública con la particiónodm
).
Para obtener más información, consulte Arranque verificado .