Plataforma de referencia

A través de un nuevo producto llamado trout , Android Automotive (AAOS) ahora brinda soporte para la implementación como una máquina virtual invitada (VM) 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 . La siguiente tabla describe la tecnología utilizada para virtualizar cada uno de los subsistemas de trout .

Rasgo Tecnología
HAL de control de audio vsock/gRPC
HAL de audio virtio-snd
Bluetooth virtio-console
Estado de descarga HAL vsock/gRPC
Sistema de vista extendida (EVS) virtio-video
modo garaje vsock/gRPC
Gráficos virtio-gpu
Sistema mundial de navegación por satélite (GNSS) virtio-console
Sensor HAL 2.0 virtio-scmi and IIO
Entrada de pantalla táctil virtio-input
HAL del vehículo vsock/gRPC

Trucha extensible

La trout se puede utilizar como punto de partida para crear nuevos objetivos Android de información y entretenimiento en el vehículo (IVI). La infraestructura de construcción está diseñada para ser ampliada y personalizada. 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 ...]

Varias 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 por medio de una interfaz gRPC respaldada por una conexión vsock entre el invitado AAOS y un sistema host que proporciona la implementación de funciones subyacente. Estos deben configurarse mediante el suministro de los parámetros de conexión vsock adecuados como propiedades del proveedor. El código fuente actúa como la última verdad fundamental sobre la cual las propiedades están disponibles para la configuración y su semántica.

Trucha de construcción

Compilar el espacio de usuario

Para compilar el espacio de usuario:

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

Construyendo el núcleo

Para trout 1.1, el código base del núcleo se proporciona en AOSP. El núcleo de trout está compuesto por el mismo código que el ACK 5.10 anterior, con la adición de módulos específicos de trout para los subsistemas VirtIO.

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

Su proveedor de hipervisor puede requerir una configuración de kernel diferente o módulos adicionales que deben compilarse. 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 del host 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 la compatibilidad con CTS en trout 1.0.

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

CtsEscenificadoInstalarHostPruebaCasos
CtsRollbackManagerHostTestCases
CtsVideoTestCases
CtsHostsideNetworkPruebas
CtsActivityManagerFondoActividadPruebaCasos
CtsAdbHostTestCases
CtsNativoHardwarePruebaCasos
CtsContentTestCases
CtsCarHostPruebaCasos
Casos de prueba CtsOs
CtsStatsdHostTestCases
CtsVoiceInteractionTestCases
CtsViewTestCases
CtsCameraTestCasos
CtsUbicaciónGnssPruebaCasos
CtsGraphicsTestCasos
CtsIncidenteHostPruebaCasos
CtsInstallHostTestCasos
CtsNativeVerifiedBootTestCases
CtsNetTestCasos
CtsWindowManagerDeviceTestCases
CtsMediaStressTestCasos
Casos de prueba de CtsApp
CtsUsbPruebas
CtsAutoFillServiceTestCases
CtsDisplayTestCases
Casos de prueba de CtsMedia
Casos de prueba CtsDeqp
CtsDumpsysHostTestCasos
CtsOpenGLTestCasesCtsLibcoreTestCases
CtsSeguridadHostTestCases
CtsEntradaMétodoPruebaCasos
CtsStatsdAtomHostTestCasos
CtsPermission4TestCases
CtsNNAPIBenchmarkCasos de prueba
CtsSimpleperfTestCasos
CtsAccessibilityTestCases
CtsAppSeguridadHostTestCasos
CtsKeystoreTestCases

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

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
Dispositivo desbloqueado Prueba requerida
Prueba de descubrimiento de sensor dinámico
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 lanzamiento

trout 1.1 contiene los siguientes problemas conocidos:

  • Las compilaciones de usuarios de trout no están disponibles. El sistema está construido como -userdebug , lo que puede afectar algunas pruebas de CTS.
  • El arranque verificado de Android (AVB) no es compatible.
  • Es posible que algunos subsistemas de Android no estén disponibles, incluido el mundo seguro y NNHAL.
  • El acceso a la red de invitados generalmente se proporciona por medio de 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 causar fallas 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 .