Plataforma de referencia

A través de un nuevo producto llamado trout, Android Automotive (AAOS) ahora proporciona compatibilidad para la implementación como una 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 la configuración del dispositivo trout. El código fuente del espacio de usuario se puede encontrar 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 por satélite (GNSS) virtio-console
HAL de sensores 2.0 virtio-scmi and IIO
Entrada de pantalla táctil virtio-input
HAL de vehículo vsock/gRPC

Extiende trout

trout se puede usar como punto de partida para crear nuevos destinos de Android para sistemas de 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 ...]

Se pueden reemplazar individualmente varios HAL de Android por implementaciones personalizadas, o bien se pueden mantener las implementaciones predeterminadas, pero se ajustan ciertos parámetros de configuración para establecer una comunicación adecuada entre VMs en el entorno de destino. Estos HAL (incluidos el HAL de vehículo, el HAL de control de audio y el HAL de Dumpstate) se implementan por medio 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 subyacente. Estos se deben configurar proporcionando los parámetros de conexión vsock adecuados como propiedades del proveedor. El código fuente actúa como la verdad fundamental definitiva sobre qué propiedades están disponibles para la configuración y su semántica.

Compila trout

Compila el espacio de usuario

Para compilar el espacio de 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 trout kernel se compone del mismo código que el ACK 5.10 ascendente, con la adición de trout-specific módulos 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 de tu hipervisor tenga una configuración de kernel diferente requerida o módulos adicionales que deban compilarse. Asegúrate de seguir esta guía específica, si se proporciona.

Cumplimiento

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

No realizamos validaciones xTS adicionales en trout 1.1. Sigue consultando el debate sobre la compatibilidad con CTS en trout 1.0 que se incluye a continuación.

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

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 en las pruebas:

Prueba del selector de auto
Prueba del anunciante de Bluetooth de bajo consumo (BLE)
Verificador de calidad de video en transmisión
Prueba del dispositivo HID de Bluetooth
Prueba del micrófono de ultrasonido de alta fidelidad
Prueba del altavoz de ultrasonido de alta fidelidad
Prueba de dispositivo desbloqueado requerido
Prueba de detección 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 Android Verified Boot (AVB).
  • Es posible que algunos subsistemas de Android no estén disponibles, incluidos el mundo seguro y NNHAL.
  • Por lo general, el acceso a la red para invitados se proporciona por medio de un adaptador Wi-Fi virtualizado y un virtio-net túnel. La conectividad del host depende de la implementación específica del hipervisor.
  • Es posible que algunas implementaciones ofrezcan capacidades de Bluetooth limitadas o nulas.
  • Es posible que la inyecció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.
  • STS puede causar inestabilidad en el sistema y requerir un reinicio.

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