Plataforma de referencia

A través de un nuevo producto llamado trout, Android Automotive (AAOS) ahora brinda compatibilidad 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 de Cuttlefish y está disponible como configuración del dispositivo trout. Puedes encontrar el código fuente del espacio de usuario en device/google/trout. En la siguiente tabla, se describe la tecnología que se usa para virtualizar cada uno de los subsistemas en trout.

Función Tecnología
HAL de control de audio vsock/gRPC
HAL de audio virtio-snd
Bluetooth virtio-console
HAL de Dumpstate vsock/gRPC
Sistema de vista extendida (EVS) virtio-video
Modo de cochera vsock/gRPC
Gráficos virtio-gpu
Sistema global de navegación satelital (GNSS) virtio-console
Sensor HAL 2.0 virtio-scmi and IIO
Entrada de la pantalla táctil virtio-input
HAL de vehículo vsock/gRPC

Extender trucha

trout se puede usar como punto de partida para crear nuevos destinos de Android para infoentretenimiento en el vehículo (IVI). La infraestructura de compilación está diseñada para extenderse 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 de forma individual por implementaciones personalizadas, o bien se pueden mantener las implementaciones predeterminadas, pero se deben ajustar ciertos parámetros de configuración para establecer una comunicación adecuada entre las VMs en el entorno de destino. Estos HAL (incluidos el HAL de vehículos, el HAL de control de audio y el HAL de Dumpstate) se implementan a través de una interfaz gRPC respaldada por una conexión vsock entre el invitado de AAOS y un sistema host que proporciona la implementación de funciones subyacentes. Para ello, debes proporcionar los parámetros de conexión vsock correctos como propiedades del proveedor. El código fuente actúa como la fuente de información definitiva en la que las propiedades están disponibles para la configuración y su semántica.

Compila trout

Compila el espacio del usuario

Para compilar el espacio del usuario, haz lo siguiente:

  1. Descarga el árbol de fuentes de Android:
    repo init -u https://android.googlesource.com/platform/manifest -b main
    repo sync -j8
    
  2. Compila el entorno:
    source build/envsetup.sh
    lunch aosp_trout_arm64-userdebug
    make -j24
    

Cómo compilar el kernel

Para trout 1.1, la base de código del kernel se proporciona en AOSP. El kernel de trout se compone del mismo código que el ACK 5.10 upstream, con la adición de módulos específicos de trout para los subsistemas de VirtIO.

  1. Para clonar el kernel, ejecuta lo siguiente:
    repo init https://android.googlesource.com/kernel/manifest -b trout-android12-5.10 && repo sync
    
  2. Para compilar el kernel, ejecuta lo siguiente:
    BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
    

Es posible que el proveedor del hipervisor requiera una configuración de kernel diferente o módulos adicionales que se deban compilar. Asegúrate de seguir esta guía específica, si se proporciona.

Cumplimiento

Cuando AAOS se ejecuta como una VM de invitado, nuestro objetivo es que sea una implementación de Android compatible desde la perspectiva del framework. Los problemas del host son responsabilidad de cada implementación y están fuera del alcance de trout 1.1.

No realizamos una validación adicional de xTS en trout 1.1. Sigue refiriéndote a la siguiente discusión sobre la compatibilidad con CTS en trout 1.0.

En trout 1.0, aún quedan varios problemas de CTS. Se sabe que los siguientes módulos de CTS incluyen fallas de prueba:

CtsStagedInstallHostTestCases
CtsRollbackManagerHostTestCases
CtsVideoTestCases
CtsHostsideNetworkTests
CtsActivityManagerBackgroundActivityTestCases
CtsAdbHostTestCases
CtsNativeHardwareTestCases
CtsContentTestCases
CtsCarHostTestCases
CtsOsTestCases
CtsStatsdHostTestCases
CtsVoiceInteractionTestCases
CtsViewTestCases
CtsCameraTestCases
CtsLocationGnssTestCases
CtsGraphicsTestCases
CtsIncidentHostTestCases
CtsInstallHostTestCases
CtsNativeVerifiedBootTestCases
CtsNetTestCases
CtsWindowManagerDeviceTestCases
CtsMediaStressTestCases
CtsAppTestCases
CtsUsbTests
CtsAutoFillServiceTestCases
CtsDisplayTestCases
CtsMediaTestCases
CtsDeqpTestCases
CtsDumpsysHostTestCases
CtsOpenGLTestCasesCtsLibcoreTestCases
CtsSecurityHostTestCases
CtsInputMethodTestCases
CtsStatsdAtomHostTestCases
CtsPermission4TestCases
CtsNNAPIBenchmarkTestCases
CtsSimpleperfTestCases
CtsAccessibilityTestCases
CtsAppSecurityHostTestCases
CtsKeystoreTestCases

Se sabe que las siguientes áreas de CTS-V incluyen fallas de prueba:

Prueba de Car Launcher
Prueba de anunciante de Bluetooth de bajo consumo (BLE)
Verificador de calidad de video de transmisión
Prueba de dispositivo HID Bluetooth
Prueba de micrófono de ultrasonido HiFi
Prueba de bocina de ultrasonido HiFi
Prueba de dispositivo desbloqueado obligatorio
Prueba de descubrimiento de sensores dinámicos
Prueba de 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 la versión

trout 1.1 contiene los siguientes problemas conocidos:

  • Las compilaciones de usuario de trout no están disponibles. El sistema se compila como -userdebug, lo que puede afectar algunas pruebas de CTS.
  • No se admite el inicio verificado de Android (AVB).
  • Es posible que algunos subsistemas de Android no estén disponibles, incluidos el entorno seguro y NNHAL.
  • Por lo general, el acceso a la red para invitados se proporciona a través de un adaptador Wi-Fi virtualizado y un túnel virtio-net. La conectividad del host depende de la implementación específica del hipervisor.
  • Algunas implementaciones pueden ofrecer capacidades limitadas de Bluetooth o no tenerlas.
  • Es posible que una inserción de eventos de VHAL no funcione para algunos sensores.
  • Algunas cargas de trabajo pesadas pueden causar fallas en la reproducción de audio.
  • En algunas implementaciones, el reinicio de adb del invitado de AAOS puede reiniciar todo el sistema.
  • El STS puede causar inestabilidad en el sistema y requerir un reinicio.

Para obtener más detalles, consulta las notas de la versión para socios de tu implementación específica de trout.