Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Imágenes DTB

Las implementaciones de Android pueden incluir una imagen de blob de árbol de dispositivos (DTB) para que la use el gestor de arranque. La ubicación de la imagen DTB (y las opciones para especificar parámetros de imagen DTB) difiere entre las versiones de Android.

  • En Android 11, los dispositivos que usan la imagen del núcleo genérico (GKI) deben ser compatibles con la partición de arranque proveedor , que incluye toda la información específica del proveedor que se trasladó desde la partición de arranque. Debido a que la imagen de DTB contiene datos específicos del proveedor, ahora forma parte de la partición de arranque del proveedor. Para especificar los parámetros de imagen DTB, véase el encabezado de inicio del proveedor .

  • En Android 10, los dispositivos pueden incluir la imagen DTB en la partición de arranque. Para especificar los parámetros de imagen DTB, ver la imagen DTB la imagen de arranque en la inclusión .

  • En Android 9 e inferior, la imagen DTB puede existir en su propia partición o se añadirá a los kernel image.gz para crear la imagen + DTB kernel (que a continuación se pasa a mkbootimg para crear boot.img ).

Formato de imagen DTB

En Android 10 y superior, la imagen DTB debe utilizar uno de los siguientes formatos:

  • DT blobs concatenados uno tras otro. El cargador de arranque utiliza el totalsize campo en cada cabecera de FDT para leer y analizar el blob correspondiente.

  • Particiones DTB / DTBO. El gestor de arranque tiene una forma eficiente para seleccionar la burbuja DT correcta mediante el examen de la dt_table_entry estructura (contiene id , rev y custom campos) que puede contener información sobre el hardware de identificación para la entrada). Para más detalles, véase DTB DTBO particiones / .

Incluir la imagen DTB en la imagen de arranque

Los dispositivos que ejecutan Android 10 pueden incluir la imagen DTB en la imagen de arranque. Esto elimina la necesidad de Android para las secuencias de comandos de apoyo que añadir la imagen a DTB image.gz en el núcleo, y permite el uso de Vendor Test Suite (VTS) de prueba para verificar (y estandarizar) la colocación DTB.

Además, para los dispositivos que no son A / B, es más seguro tener la DTB como parte de la imagen de recuperación en lugar de en una partición separada para evitar problemas causados ​​por OTA interrumpidas. Durante una OTA, si ocurre un problema después de que se actualiza la partición DTB (pero antes de completar la actualización completa), el dispositivo intenta iniciarse en modo de recuperación para completar la OTA; sin embargo, debido a que la partición DTB ya se ha actualizado, podría producirse una discrepancia con la imagen de recuperación (que aún no se ha actualizado). Tener la imagen DTB como parte del formato de la imagen de arranque evita estos problemas al hacer que la imagen de recuperación sea autosuficiente (es decir, no depende de otra partición).

Estructura de la imagen de arranque

Los dispositivos que ejecutan Android 10 pueden incluir una imagen DTB con la siguiente estructura de imagen de arranque.

Sección de imagen de arranque Número de páginas
Encabezado de arranque (1 página) 1
Kernel (l páginas) l = ( kernel_size + page_size - 1) / page_size
Ramdisk (m páginas) m = ( ramdisk_size + page_size - 1) / page_size
Cargador de arranque de segunda etapa (n páginas) n = ( second_size + page_size - 1) / page_size
DTBO de recuperación (o páginas) o = ( recovery_dtbo_size + page_size - 1) / page_size
DTB (p páginas) p = ( dtb_size + page_size - 1) / page_size

Ruta de la imagen DTB

Para los dispositivos con Android 10, se puede utilizar el mkbootimg.py herramienta y los siguientes argumentos para especificar la ruta a la imagen DTB.

Argumento Descripción
dtb Ruta a la imagen DTB que se incluirá en las imágenes de arranque / recuperación.
dtb_offset Cuando se añade a la base argumento, proporciona la dirección de carga física para el árbol de dispositivos final. Por ejemplo, si la base argumento es 0x10000000 y el dtb_offset argumento es 0x01000000 , el dtb_addr_field en el encabezado de la imagen de arranque está poblada como 0x11000000 .

La variable de configuración bordo BOARD_PREBUILT_DTBIMAGE_DIR debe ser utilizado para especificar la ruta a la imagen DTB. Si más de un archivo con extensión *.dtb está presente en el directorio BOARD_PREBUILT_DTBIMAGE_DIR , el sistema de construcción Android concatena los archivos para crear la imagen final DTB utilizado en la creación de imágenes de arranque.

Para pasar el argumento de dtb a mkbootimg.py la imagen DTB desde el directorio especificado por la BOARD_PREBUILT_DTBIMAGE_DIR , la junta de configuración variable de BOARD_INCLUDE_DTB_IN_BOOTIMG debe establecerse en true . Por ejemplo:

BOARD_INCLUDE_DTB_IN_BOOTIMG := true

Puede anexar el dtb_offset argumento a la BOARD_MKBOOTIMG_ARGS variable de configuración bordo con los otros desplazamientos y la versión de la cabecera. Por ejemplo:

BOARD_MKBOOTIMG_ARGS := --ramdisk_offset $(BOARD_RAMDISK_OFFSET) --dtb_offset $(BOARD_DTB_OFFSET) --tags_offset $(BOARD_KERNEL_TAGS_OFFSET) --header_version $(BOARD_BOOTIMG_HEADER_VERSION)

Soporte del cargador de arranque

Para VTS se ejecute correctamente en dispositivos con Android 10, el gestor de arranque debe ser compatible con la imagen de arranque actualizado y debe añadir el androidboot.dtb_idx parámetro de línea de comandos del kernel para indicar el índice del árbol de dispositivos seleccionado (DT). Puede especificar solo un (1) índice. Por ejemplo, el parámetro androidboot.dtb_idx=N informa N como el índice de base cero del árbol de dispositivos seleccionado por el cargador de arranque del conjunto de DTBS presente la imagen de arranque en.