Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Implementación de DTO

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:

  1. Compile .dts DT principales en .dtb archivo .dtb .
  2. .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:

  1. 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.
  2. .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
Figura 1. Coloque .dtbo en una partición única, por ejemplo, la partición dtbo .
Partición ODM
Figura 2. Coloque .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
Figura 3. Partición A / B de DTBO, ejemplo 1.
Ejemplo 2
Figura 4. Partición A / B de DTBO, ejemplo 2.

Ejecutando en el cargador de arranque

Correr:

Figura 5. Implementación típica en tiempo de ejecución para la superposición del árbol de dispositivos en el gestor de arranque.
  1. Cargue .dtb del almacenamiento en la memoria.
  2. Cargue .dtbo del almacenamiento a la memoria.
  3. .dtb con .dtbo para que sea un DT combinado.
  4. 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ón odm ).

Para obtener más información, consulte Arranque verificado .