Plataforma de referencia

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:

  1. Descargue el árbol de fuentes de Android:
    repo init -u https://android.googlesource.com/platform/manifest -b main
    repo sync -j8
    
  2. 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.

  1. Para clonar el kernel, ejecute:
    repo init https://android.googlesource.com/kernel/manifest -b trout-android12-5.10 && repo sync
    
  2. 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 .