Através de uma truta novo produto chamado, Automotive Android (AAOS) agora fornece suporte para implantação como uma máquina virtual convidada (VM) em ambientes compatíveis com o virtio padrão. trout
baseia-se no choco plataforma virtual de referência e está disponível como a trout
configuração do dispositivo. O código-fonte userspace podem ser encontrados no device/google/trout
. O quadro que se segue descreve a tecnologia utilizada para a virtualização cada um dos subsistemas de trout
.
Recurso | Tecnologia |
---|---|
HAL de controle de áudio | vsock/gRPC |
Áudio HAL | virtio-snd |
Dumpstate HAL | vsock/gRPC |
Extended View System (EVS) | virtio-video and vendor extensions |
Modo garagem | vsock/gRPC |
Gráficos | virtio-gpu |
Sensor HAL 2.0 | virtio-scmi and IIO |
Entrada da tela sensível ao toque | virtio-input |
HAL do veículo | vsock/gRPC |
estendendo trout
trout
pode ser usado como um ponto de partida para criar novas In-Vehicle Infotainment (IVI) alvos Android. A infraestrutura de construção é projetada para ser estendida e customizada. Por exemplo:
# 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 ...]
Vários HALs do Android podem ser substituídos individualmente por implementações personalizadas ou as implementações padrão mantidas, mas certos parâmetros de configuração ajustados para estabelecer uma comunicação adequada entre VMs no ambiente de destino. Estes HALs (incluindo Veículo HAL, Audio Control HAL, e dumpstate HAL) são implementadas por meio de uma interface gRPC apoiado por uma vsock
conexão entre o convidado AAOS e um sistema host fornecendo a implementação recurso subjacente. Estes devem ser configurado por meio de fornecimento das adequadas vsock
parâmetros de ligação como as propriedades do fornecedor.
construção de trout
Compile o espaço do usuário
Para compilar o espaço do usuário:
- Baixar a árvore fonte Android:
repo init -u https://android.googlesource.com/platform/manifest -b master repo sync -j8
- Construir o ambiente:
source build/envsetup.sh lunch aosp_trout_arm64-userdebug make -j24
Construindo o kernel
Para a versão de plataforma de referência inicial 0.9, devido a uma limitação de configuração do hipervisor, o kernel do Android não pode ser personalizado. Um kernel pré-construído será fornecido como parte do lançamento do hipervisor OpenSynergy. O kernel é baseado no Android Comum Kernel ramo common-android11-5.4
com algumas modificações para incorporar as mais recentes drivers virtio. Para fins informativos, o código-fonte do kernel correspondente está disponível nestes locais:
Conformidade
O plano é atingir 100% de compatibilidade em uma versão posterior.
Limitações e elementos não suportados em trout
- Bluetooth.
- Sistema global de navegação por satélite (GNSS).
- LaunchCVD.
trout
não inicializa atualmente sobcrosvm
. - Gráficos. Nesta versão, o dispositivo virgl virtio GPU funciona apenas quando
dmabuf
. está desabilitado. A IU mostra cores invertidas para vermelho e azul.