Compatibilidad con DTO

La superposición del árbol de dispositivos (DTO) extiende existentes las implementaciones del árbol de dispositivos aplanado (FDT) habilitando de usuario para modificar los datos iniciales del árbol de dispositivos en el kernel durante el tiempo de ejecución cargar FDT de superposición adicionales que modifiquen los datos originales. Android no requieren actualizaciones del tiempo de ejecución de los BLOB de DT del espacio del usuario, pero, en cambio, que los proveedores agreguen parches del árbol de dispositivos en el bootloader con la ayuda de libfdt o libufdt.

Compatibilidad con Android DTO

La compatibilidad de Android con las DTO varía según la versión de Android:

  • Android 7.x y las versiones anteriores no requieren compatibilidad con el árbol de dispositivos y no brindar recomendaciones sobre cómo los proveedores pasan los BLOB de DT al kernel o dónde los almacenan.
  • Android 8.x recomienda compatibilidad con el árbol de dispositivos para mantener los componentes Se separan las partes del kernel solo para SoC.
  • Android 9 y las versiones posteriores requieren un BLOB del árbol de dispositivos de superposición (DTBO) y que se aplique al menos un DTO.

Requisitos de partición de DTO

La mayoría de los dispositivos Android agregan el BLOB de DT al kernel durante el tiempo de compilación y el bootloader carga el BLOB desde el kernel. Sin embargo, debido a que los BLOB de DT considera parte del kernel de sistema en chip (SoC), Android no tiene restricciones sobre cómo compilar o almacenar BLOB de DT. Los dispositivos pueden agregar la DT blob al kernel o almacenar el blob en una partición separada; el único requisito es que el bootloader sepa cómo y dónde cargar el BLOB de la DT de la imagen de la que se originó.

Para admitir DTO, los dispositivos deben tener lo siguiente:

  • Una partición de DTBO por imagen de kernel para una superposición de DT específica de la placa y el bootloader debe saber dónde y cómo cargar la DTB específica del SoC. El el tamaño de la partición depende de la cantidad de cambios necesarios para que el SoC Kernel: elige un tamaño con margen de crecimiento para actualizaciones futuras normalmente, un Un tamaño de partición de 8 MB es más que suficiente.
  • Particiones DTO actualizadas para A/B dispositivos. El kernel de recuperación es el mismo de Android, pero Se debe configurar la partición para dispositivos A/B de manera que pueda actualizarse de manera inalámbrica (OTA). El tamaño de la partición depende del dispositivo y la cantidad de cambios sobre el BLOB del kernel DT principal del SoC.

Requisitos del bootloader de DTO

Para admitir la DTO, el bootloader debe hacer lo siguiente:

  • Conocer cómo y dónde (considerando la ranura de inicio de los dispositivos A/B) cargar la BLOB de DT específico de SoC de forma específica para el proveedor (por lo general, se extrae de el final de la imagen del kernel a medida que se agregan blobs al kernel).
  • Conocer cómo y dónde cargar el BLOB de superposición de DT en un recurso específico de proveedor de una nueva manera.
  • Une el BLOB principal de DT con la superposición antes de pasar el dispositivo combinado. al kernel.

Si quieres obtener más información para agregar compatibilidad con DTO en el bootloader, consulta el siguiente artículo: Superposiciones del árbol de dispositivos.