Device Tree Overlay (DTO) amplía las implementaciones existentes de Flattened Device Tree (FDT) al permitir que el espacio de usuario modifique los datos iniciales del árbol de dispositivos en el kernel en tiempo de ejecución cargando FDT de superposición adicionales que modifican los datos originales. Android no requiere actualizaciones en tiempo de ejecución de los blobs DT desde el espacio de usuario, sino que recomienda que los proveedores agreguen el parche del árbol de dispositivos en el gestor de arranque con la ayuda de libfdt
o libufdt
.
Compatibilidad con DTO de Android
La compatibilidad de Android con DTO varía según la versión de Android:
- Android 7.x y versiones anteriores no requieren compatibilidad con el árbol de dispositivos y no brindan recomendaciones sobre cómo los proveedores pasan los blobs DT al kernel o dónde los almacenan.
- Android 8.x recomienda la compatibilidad con el árbol de dispositivos para mantener separadas las partes del kernel específicas de la placa y solo de SoC.
- Android 9 y versiones posteriores requieren que esté presente una partición de superposición de blobs de árbol de dispositivos (DTBO) y que se aplique al menos un DTO.
Requisitos de partición DTO
La mayoría de los dispositivos Android agregan el blob DT al kernel en el momento de la compilación y el gestor de arranque carga el blob desde el kernel. Sin embargo, debido a que los blobs DT se consideran parte del kernel del sistema en chip (SoC), Android no tiene requisitos específicos sobre cómo compilar o almacenar blobs DT. Los dispositivos pueden agregar el blob DT al kernel o almacenar el blob en una partición separada; el único requisito es que el gestor de arranque sepa cómo y dónde cargar el blob DT.
Para admitir DTO, los dispositivos deben tener:
- Una partición DTBO por imagen del kernel para una superposición DT específica de la placa y el gestor de arranque debe saber dónde y cómo cargar el DTB específico del SoC. El tamaño de la partición depende de la cantidad de cambios necesarios para realizar el kernel del SoC: elija un tamaño con espacio para crecer para futuras actualizaciones; Normalmente, un tamaño de partición de 8 MB es más que suficiente.
- Particiones DTO actualizadas para dispositivos A/B . El kernel de recuperación es el mismo que el kernel de Android, pero la partición debe configurarse para dispositivos A/B para que pueda actualizarse mediante actualizaciones inalámbricas (OTA). El tamaño de la partición depende del dispositivo y de la cantidad de cambios en la parte superior del blob DT del kernel SoC principal.
Requisitos del gestor de arranque DTO
Para admitir DTO, el gestor de arranque debe:
- Sepa cómo y dónde (teniendo en cuenta la ranura de arranque para dispositivos A/B) cargar el blob DT específico de SoC de una manera específica del proveedor (generalmente extraído del final de la imagen del kernel a medida que los blobs se agregan al kernel).
- Sepa cómo y dónde cargar el blob DT superpuesto de una manera específica del proveedor.
- Parchee el blob DT principal con la superposición antes de pasar el árbol de dispositivos combinado al kernel.
Para obtener más detalles sobre cómo agregar compatibilidad con DTO en el gestor de arranque, consulte Superposiciones del árbol de dispositivos .