¿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:
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 quermt_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 interfazrmnet
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.