A través de un nuevo producto llamado trout
, Android Automotive (AAOS) ahora brinda soporte para la implementación como máquina virtual (VM) invitada en entornos compatibles con el estándar VirtIO . trout
se basa en la plataforma de referencia virtual Cuttlefish y está disponible como configuración del dispositivo trout
. El código fuente del espacio de usuario se puede encontrar en device/google/trout
. La siguiente tabla describe la tecnología utilizada para virtualizar cada uno de los subsistemas en trout
.
Característica | Tecnología |
---|---|
Control de audioHAL | vsock/gRPC |
AudioHAL | virtio-snd |
Bluetooth | virtio-console |
Estado de volcado HAL | vsock/gRPC |
Sistema de vista extendida (EVS) | virtio-video |
Modo garaje | vsock/gRPC |
Gráficos | virtio-gpu |
Sistema global de navegación por satélite (GNSS) | virtio-console |
Sensor HAL 2.0 | virtio-scmi and IIO |
Entrada de pantalla táctil | virtio-input |
Vehículo HAL | vsock/gRPC |
Extender la trucha
trout
se puede utilizar como punto de partida para crear nuevos objetivos Android de infoentretenimiento en el vehículo (IVI). La infraestructura de construcción está diseñada para ampliarse y personalizarse. Por ejemplo:
# Inherit trout-arm64 default values and settings $(call inherit-product, device/google/trout/aosp_trout_arm64.mk) # Customize HALs as needed LOCAL_VHAL_PRODUCT_PACKAGE := vendor.oem.vhal@2.0-service LOCAL_AUDIO_PRODUCT_PACKAGE := vendor.oem.audio@6.0-impl # Configure SELinux policy BOARD_SEPOLICY_DIRS += device/oem/car/sepolicy/vendor/oem # Configure properties LOCAL_DUMPSTATE_PROPERTIES := \ ro.vendor.dumpstate.server.cid=22 \ ro.vendor.dumpstate.server.port=406 \ ro.vendor.helpersystem.log_loc=/data/dumpstate [... and more as needed ...]
Varios HAL de Android se pueden reemplazar individualmente con implementaciones personalizadas, o se pueden mantener las implementaciones predeterminadas, pero se pueden ajustar ciertos parámetros de configuración para establecer una comunicación adecuada entre máquinas virtuales en el entorno de destino. Estos HAL (incluidos Vehicle HAL, Audio Control HAL y Dumpstate HAL) se implementan mediante una interfaz gRPC respaldada por una conexión vsock
entre el invitado AAOS y un sistema host que proporciona la implementación de la función subyacente. Estos deben configurarse proporcionando los parámetros de conexión vsock
adecuados como propiedades del proveedor. El código fuente actúa como la verdad fundamental sobre la cual las propiedades están disponibles para la configuración y su semántica.
construir truchas
Compilar el espacio de usuario
Para compilar el espacio de usuario:
- Descargue el árbol de fuentes de Android:
repo init -u https://android.googlesource.com/platform/manifest -b main repo sync -j8
- Construya el entorno:
source build/envsetup.sh lunch aosp_trout_arm64-userdebug make -j24
construir el núcleo
Para trout
1.1, el código base del kernel se proporciona en AOSP. El núcleo trout
está compuesto por el mismo código que el ACK 5.10 anterior, con la adición de módulos específicos trout
para los subsistemas VirtIO.
- Para clonar el kernel, ejecute:
repo init https://android.googlesource.com/kernel/manifest -b trout-android12-5.10 && repo sync
- Para construir el kernel ejecute:
BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
Es posible que su proveedor de hipervisor requiera una configuración de kernel diferente o que deban compilarse módulos adicionales. Asegúrese de seguir esta guía específica, si se proporciona.
Cumplimiento
Cuando AAOS se ejecuta como una máquina virtual invitada, nuestro objetivo es ser una implementación de Android compatible desde la perspectiva del marco. Los problemas del lado anfitrión son competencia de cada implementación y están fuera del alcance de trout
1.1.
No hemos realizado una validación xTS adicional en trout
1.1. Continúe consultando la discusión a continuación sobre el soporte de CTS en trout
1.0.
En trout
1.0, persisten varios problemas de CTS. Se sabe que los siguientes módulos CTS incluyen fallas de prueba:
CtsStaggedInstallHostTestCases CtsRollbackManagerHostTestCases CtsVideoCasos de prueba CtsHostsideNetworkPruebas CtsActivityManagerFondoActividadCasos de prueba CtsAdbHostCasos de prueba CtsNativeHardwareCasos de prueba CtsContentPruebaCasos CtsCarHostCasos de prueba Casos de prueba CtsOs CtsStatsdHostTestCasos CtsVoiceInteractionCasos de prueba CtsViewCasos de prueba CtsCasos De Prueba De Cámara CtsUbicaciónGnssCasos de prueba CtsGráficosCasos de prueba CtsIncidentHostTestCasos CtsInstallHostTestCasos CtsNativeVerifiedBootTestCases CtsNetTestCasos | CtsWindowManagerDeviceTestCases CtsMediaStressTestCasos CtsAppTestCasos CtsUsbPruebas CtsAutoFillServiceCasos de prueba CtsDisplayCasos de prueba Casos de prueba de CtsMedia Casos de prueba CtsDeqp CtsDumpsysHostTestCasos CtsOpenGLTestCasesCtsLibcoreTestCases CtsSecurityHostTestCasos CtsInputMethodPruebaCasos CtsStatsdAtomHostTestCases CtsPermission4Casos de prueba CtsNNAPIBenchmarkCasos de prueba CtsSimpleperfCasos de prueba CtsAccessibilityTestCases CtsAppSecurityHostTestCases CtsKeystoreTestCasos |
Se sabe que las siguientes áreas CTS-V incluyen fallas de prueba:
Prueba de lanzador de coches Prueba de anunciante de Bluetooth de baja energía (BLE) Verificador de calidad de transmisión de video Prueba de dispositivo Bluetooth HID Prueba de micrófono de ultrasonido de alta fidelidad Prueba de altavoz de ultrasonido de alta fidelidad | Prueba requerida del dispositivo desbloqueado Prueba de descubrimiento de sensor dinámico Prueba del sensor fuera del cuerpo Prueba de movimiento significativo Prueba de notificación de enrutamiento de salida de audio Prueba de solicitud o sugerencia de red |
Notas de lanzamiento
trout
1.1 contiene los siguientes problemas conocidos:
- Las versiones de
trout
de usuario no están disponibles. El sistema está construido como-userdebug
, lo que puede afectar algunas pruebas CTS. - El arranque verificado de Android (AVB) no es compatible.
- Es posible que algunos subsistemas de Android no estén disponibles, incluidos Secure World y NNHAL.
- El acceso a la red de invitados generalmente se proporciona mediante un adaptador Wi-Fi virtualizado y un túnel
virtio-net
. La conectividad del lado del host depende de la implementación específica de su hipervisor. - Algunas implementaciones pueden ofrecer capacidad Bluetooth limitada o nula.
- Es posible que una inyección de eventos VHAL no funcione para algunos sensores.
- Algunas cargas de trabajo pesadas pueden provocar fallos en la reproducción de audio.
- En algunas implementaciones, el reinicio adb del invitado AAOS puede reiniciar todo el sistema.
- STS puede causar inestabilidad en el sistema y requerir un reinicio.
Para obtener detalles adicionales, consulte las notas de la versión del socio para su implementación específica de trout
.