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 (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 . 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.

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 master
    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.0, el código base del kernel 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 para el entorno OpenSynergy, ejecute:
    BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
    

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.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.0 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 acceso a TrustZone para Android no es compatible con trout 1.0.
  • El arranque verificado de Android (AVB) no es compatible.
  • Los aceleradores neuronales no están expuestos a NNAPI en trout 1.0.
  • La virtualización Wi-Fi no está disponible y algunas implementaciones ofrecen soporte limitado para un túnel `virtio-net`.
  • En algunos casos, la transferencia de archivos grandes desde o hacia Android a través de Android Debug Bridge (ADB) puede hacer que el sistema se cuelgue.
  • En algunos casos, la aplicación de SMS puede dejar de sincronizarse con un teléfono Bluetooth emparejado.
  • Es posible que una inyección de eventos VHAL no funcione para algunos sensores.
  • La serie ADB del SoC subyacente no se reenvía a Android como la serie ADB del invitado.
  • En algunas implementaciones, es posible que Ethernet no esté disponible para el host para la conectividad de red.

Para obtener detalles adicionales, consulte las notas de la versión del socio para su implementación específica de trout .

,

A través de un nuevo producto llamado trout , Android Automotive (AAOS) ahora brinda soporte 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 . 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.

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 master
    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.0, el código base del kernel 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 para el entorno OpenSynergy, ejecute:
    BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
    

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.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.0 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 acceso a TrustZone para Android no es compatible con trout 1.0.
  • El arranque verificado de Android (AVB) no es compatible.
  • Los aceleradores neuronales no están expuestos a NNAPI en trout 1.0.
  • La virtualización Wi-Fi no está disponible y algunas implementaciones ofrecen soporte limitado para un túnel `virtio-net`.
  • En algunos casos, la transferencia de archivos grandes desde o hacia Android a través de Android Debug Bridge (ADB) puede hacer que el sistema se cuelgue.
  • En algunos casos, la aplicación de SMS puede dejar de sincronizarse con un teléfono Bluetooth emparejado.
  • Es posible que una inyección de eventos VHAL no funcione para algunos sensores.
  • La serie ADB del SoC subyacente no se reenvía a Android como la serie ADB del invitado.
  • En algunas implementaciones, es posible que Ethernet no esté disponible para el host para la conectividad de red.

Para obtener detalles adicionales, consulte las notas de la versión del socio para su implementación específica de trout .