6 votos

¿Dónde se almacena el firmware de la banda base y cómo interactúa Android con él?

Mis búsquedas en la web no proporcionaron respuestas adecuadas a estas preguntas:

1) ¿Dónde se almacena el firmware de la banda base?

Entiendo que este firmware en particular es un RTOS construido para el Procesador de Banda Base (BP/CP). BP es parte de un SoC, por lo que utiliza su propia RAM y su propio almacenamiento para el firmware.

¿Realmente se almacena el firmware en otra eMMC que no sea el firmware de Android?

2) ¿Cómo interactúa Android con el firmware de la banda base?

Nuevamente, mi entendimiento (que puede ser incorrecto) es que el BP se comunica directamente con el AP a través de una conexión serial UART a través de la Capa de Interfaz de Radio (RIL). Esta RIL interactúa con los servicios de telefonía de Android.

¿Cuándo toma acción el firmware de la banda base?

3) ¿Cuándo se utiliza la partición del módem/banda base/radio?

Me parece que solo contiene el firmware.

Una cosa que he encontrado es que esta partición no se monta durante el tiempo de ejecución de Android. ¿Se monta solo para la actualización del firmware del módem?

0 votos

rmt_storage también proporciona acceso BP al IMEI que se almacena en particiones firmadas como EFS, MODEMST1, MODEMST2, FSG, FSC junto con archivos de firmware de modem. MODEM suele ser la primera partición con sistema de archivos FAT. Todas o algunas de estas particiones pueden recibir actualizaciones de firmware del proveedor OEM/SoC. Al igual que rmt_storage, rild es un binario de código cerrado del proveedor que facilita la comunicación entre Android (pila de telefonía) y BP a través del kernel. La huella digital, la interfaz rmnet LTE/3G, RPM, TEE, GPS, Modo de Diagnóstico de Modem, etc., también se comunican con AP utilizando SMD o posiblemente UART, y sus "blobs" de espacio de usuario.

9voto

Jack Wade Puntos 231

¿El firmware realmente se encuentra almacenado en otro eMMC que no sea el firmware de Android?

No. El firmware de la banda base, el kernel y el espacio de usuario de Android están todos almacenados en el mismo eMMC (puede haber algunas excepciones, pero no conozco ninguna). Algunos SoCs tienen particiones de área de arranque que están algo aisladas a nivel de hardware (normalmente utilizadas para los cargadores de arranque), pero técnicamente también están en el mismo eMMC. Lo mismo sucede con las particiones de Replay Protected Memory Block (RPMB).

¿Cómo interactúa Android con el firmware de la banda base?

Tu comprensión es correcta de que los Procesadores de Comunicaciones/Banda Base (CP/BP o modem) están completamente aislados del Procesador de Aplicaciones (AP, que ejecuta el sistema operativo Android) y ejecutan su propio RTOS. La comunicación entre AP y BP puede ser a través de múltiples canales posibles, pero la mayoría de las veces son de tipo propietario al igual que los propios BPs (no estoy seguro de por qué: si gigantes como Qualcomm tienen puertas traseras, o esconden sus vulnerabilidades de seguridad, o no quieren poner en juego la privacidad de los usuarios). En dispositivos Qualcomm, por ejemplo, su implementación en el kernel se llama Dispositivo/Controlador de Memoria Compartida (SMD).

El BP también incluye un Procesador de Señal Digital (DSP) que se utiliza para el procesamiento de multimedia. Tanto el Modem como el DSP tienen sus particiones montables en el eMMC (al menos en dispositivos Qualcomm) a las que acceden a través del kernel usando un mecanismo de RPC. Este antiguo documento afirma:

"No se requiere nuevo hardware. Una tarjeta eMMC tendrá 2 particiones reservadas para el almacenamiento del modem.
...
Todas las solicitudes del modem serán manejadas por un programa de espacio de usuario y el cliente de almacenamiento remoto RPC proporcionará una interfaz para que la aplicación de usuario reciba las solicitudes del modem y también para enviar el estado de las solicitudes al modem."

La implementación en el kernel solo incluye un cliente de RPC, mientras que un demonio de espacio de usuario de código cerrado (Almacenamiento Remoto) maneja la comunicación real con el modem. Aunque los defensores de la privacidad han tenido problemas con este enfoque. Dado que las interfaces en el kernel de SMD u otros controladores de comunicación no están documentadas, solo los blobs binarios de código cerrado (HALs, proporcionados por los vendedores de SoC) en el espacio de usuario pueden comunicarse con ellos (por ejemplo, rmt_storage utiliza la API de E/S de Espacio de Usuario), mientras que el marco de Android se comunica con los HAL. Las implementaciones de referencia de los HAL son parte de AOSP.

¿Está montado solo para la actualización del firmware del modem?

No. El MODEM suele ser la primera partición en el eMMC con un sistema de archivos FAT, mientras que el DSP tiene EXT4. Ambos tienen entradas en fstab y se montan en cada arranque. rmt_storage también proporciona acceso del BP al IMEI que se almacena en particiones firmadas como EFS, MODEMST1, MODEMST2, FSG, FSC junto con los archivos de firmware del modem. Todas estas particiones no tienen sistemas de archivos, sino que son blobs binarios escritos en particiones en bruto. Por lo tanto, no están montados. Todas o algunas de estas particiones pueden recibir actualizaciones de firmware OTA de los vendedores OEM/SoC.

Al igual que rmt_storage, el Daemon de Capa de Interfaz de Radio (rild) es otro HAL del vendedor que facilita la comunicación entre la pila de telefonía de Android y la interfaz LTE/3G/2G del modem a través del kernel utilizando protocolos de transferencia de control y datos como RMNET, QMI, etc. Otros componentes aislados incluyendo RPM, GPS, Modo Diagnóstico del Modem y TEE (no estoy seguro acerca de SE) también se comunican con AP utilizando canales de comunicación similares en el kernel (que también incluyen UART) y sus respectivos HALs en el espacio de usuario. RPM (Administración de Recursos y Energía) y TEE (TtustZone de Qualcomm) también tienen sus particiones en eMMC, ambos contienen binarios ejecutables ELF.


RECURSOS:

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X