A través de un nuevo producto llamado trucha, Android Automoción (AAOS) ahora proporciona soporte para el despliegue como una máquina virtual invitada (VM) en entornos compatibles con el VirtIO estándar. trout
se basa en la jibia plataforma de referencia virtual y está disponible como la trout
configuración del dispositivo. El código fuente de 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
.
Característica | Tecnología |
---|---|
Control de audio HAL | vsock/gRPC |
Audio HAL | virtio-snd |
Dumpstate HAL | vsock/gRPC |
Sistema de vista extendida (EVS) | virtio-video and vendor extensions |
Modo garaje | vsock/gRPC |
Gráficos | virtio-gpu |
Sensor HAL 2.0 | virtio-scmi and IIO |
Entrada de pantalla táctil | virtio-input |
Vehículo HAL | vsock/gRPC |
La extensión de trout
trout
se puede utilizar como punto de partida para crear nuevas en los vehículos Infotainment (IVI) objetivos Android. 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 ...]
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 VM en el entorno de destino. Estos HAL (incluyendo HAL vehículo, HAL de control de audio, y Dumpstate HAL) se implementan por medio de una interfaz de GRPC respaldado por una vsock
conexión entre el huésped AAOS y un sistema anfitrión que proporciona la aplicación característica subyacente. Estos deben ser configuradas por medio de suministro de los propios vsock
parámetros de conexión como las propiedades de los proveedores.
La construcción de trout
Compilar el espacio de usuario
Para compilar el espacio de usuario:
- Descargar el árbol de código fuente de Android:
repo init -u https://android.googlesource.com/platform/manifest -b master repo sync -j8
- Construir el medio ambiente:
source build/envsetup.sh lunch aosp_trout_arm64-userdebug make -j24
Construyendo el kernel
Para la versión 0.9 de la plataforma de referencia inicial, debido a una limitación de configuración del hipervisor, el kernel de Android no se puede personalizar. Se proporcionará un kernel prediseñado como parte de la versión del hipervisor de OpenSynergy. El núcleo está basado en Android Común Kernel rama common-android11-5.4
con algunas modificaciones para incorporar los últimos controladores Virtio. Con fines informativos, el código fuente del kernel correspondiente está disponible en estas ubicaciones:
Cumplimiento
El plan es lograr el 100% de compatibilidad en una versión posterior.
Limitaciones y elementos no compatibles en trout
- Bluetooth.
- Sistema global de navegación por satélite (GNSS).
- LaunchCVD.
trout
no tiene actualmente arranque desdecrosvm
. - Gráficos. En esta versión, el dispositivo virgl VirtIO GPU sólo funciona cuando
dmabuf
. está desactivado. La interfaz de usuario muestra colores invertidos para rojo y azul.