Por meio de um novo produto chamado trout
, o Android Automotive (AAOS) agora oferece suporte para implantação como uma máquina virtual (VM) convidada em ambientes compatíveis com o padrão VirtIO . trout
é baseado na plataforma de referência virtual Cuttlefish e está disponível como a configuração do dispositivo trout
. O código-fonte do espaço do usuário pode ser encontrado em device/google/trout
. A tabela abaixo descreve a tecnologia usada para virtualizar cada um dos subsistemas no trout
.
Característica | Tecnologia |
---|---|
HAL de controle de áudio | vsock/gRPC |
Áudio HAL | virtio-snd |
Bluetooth | virtio-console |
Dumpstate HAL | vsock/gRPC |
Sistema de Visão Estendida (EVS) | virtio-video |
modo garagem | vsock/gRPC |
Gráficos | virtio-gpu |
Sistema global de navegação por satélite (GNSS) | virtio-console |
Sensor HAL 2.0 | virtio-scmi and IIO |
Entrada da tela sensível ao toque | virtio-input |
Veículo HAL | vsock/gRPC |
Estendendo a truta
A trout
pode ser usada como ponto de partida para criar novos alvos Android de In-Vehicle Infotainment (IVI). A infraestrutura de construção foi projetada para ser estendida e personalizada. 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 a comunicação adequada entre VMs no ambiente de destino. Esses HALs (incluindo Vehicle HAL, Audio Control HAL e Dumpstate HAL) são implementados por meio de uma interface gRPC apoiada por uma conexão vsock
entre o convidado AAOS e um sistema host que fornece a implementação do recurso subjacente. Eles devem ser configurados por meio do fornecimento dos parâmetros de conexão vsock
adequados como propriedades do fornecedor. O código-fonte atua como a verdade fundamental em que as propriedades estão disponíveis para configuração e sua semântica.
Construindo trutas
Compilar o espaço do usuário
Para compilar o espaço do usuário:
- Baixe a árvore de origem do Android:
repo init -u https://android.googlesource.com/platform/manifest -b main repo sync -j8
- Crie o ambiente:
source build/envsetup.sh lunch aosp_trout_arm64-userdebug make -j24
Construindo o núcleo
Para trout
1.1, a base de código do kernel é fornecida em AOSP. O kernel trout
é composto do mesmo código do upstream ACK 5.10, com a adição de módulos específicos para trout
para subsistemas VirtIO.
- Para clonar o kernel, execute:
repo init https://android.googlesource.com/kernel/manifest -b trout-android12-5.10 && repo sync
- Para construir o kernel, execute:
BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
Seu fornecedor de hipervisor pode ter uma configuração de kernel diferente necessária ou módulos adicionais que precisam ser compilados. Certifique-se de seguir esta orientação específica, se fornecida.
Conformidade
Quando o AAOS é executado como uma VM convidada, nosso objetivo é ser uma implantação do Android compatível do ponto de vista da estrutura. As questões relacionadas ao host são de competência de cada implementação e estão fora do escopo do trout
1.1.
Não realizamos validação xTS adicional em trout
1.1. Continue a consultar a discussão abaixo sobre o suporte CTS no trout
1.0.
No trout
1.0, vários problemas de CTS permanecem. Os seguintes módulos CTS são conhecidos por incluir falhas de teste:
CtsStagedInstallHostTestCases CtsRollbackManagerHostTestCases CtsVideoTestCases CtsHostsideNetworkTests CtsActivityManagerBackgroundActivityTestCases CtsAdbHostTestCases CtsNativeHardwareTestCases CtsContentTestCases CtsCarHostTestCases CtsOsTestCases CtsStatsdHostTestCases CtsVoiceInteractionTestCases CtsViewTestCases CtsCameraTestCases CtsLocationGnssTestCases CtsGraphicsTestCases CtsIncidentHostTestCases CtsInstallHostTestCases CtsNativeVerifiedBootTestCases CtsNetTestCases | CtsWindowManagerDeviceTestCases CtsMediaStressTestCases CtsAppTestCases CtsUsbTests CtsAutoFillServiceTestCases CtsDisplayTestCases CtsMediaTestCases CtsDeqpTestCases CtsDumpsysHostTestCases CtsOpenGLTestCasesCtsLibcoreTestCases CtsSecurityHostTestCases CtsInputMethodTestCases CtsStatsdAtomHostTestCases CtsPermission4TestCases CtsNNAPIBenchmarkTestCases CtsSimpleperfTestCases CtsAccessibilityTestCases CtsAppSecurityHostTestCases CtsKeystoreTestCases |
As seguintes áreas CTS-V são conhecidas por incluir falhas de teste:
Teste do lançador de carro Teste de anunciante de Bluetooth Low Energy (BLE) Verificador de qualidade de streaming de vídeo Teste de dispositivo Bluetooth HID Teste de microfone de ultrassom de alta fidelidade Teste de alto-falante de ultrassom de alta fidelidade | Teste obrigatório de dispositivo desbloqueado Teste de descoberta de sensor dinâmico Teste do sensor fora do corpo Teste de movimento significativo Teste de notificação de roteamento de saída de áudio Teste de solicitação ou sugestão de rede |
Notas de lançamento
trout
1.1 contém os seguintes problemas conhecidos:
- As construções de
trout
do usuário não estão disponíveis. O sistema é construído como-userdebug
, o que pode afetar alguns testes CTS. - Android Verified Boot (AVB) não é suportado.
- Alguns subsistemas do Android podem estar indisponíveis, incluindo mundo seguro e NNHAL.
- O acesso à rede de convidados geralmente é fornecido por meio de um adaptador Wi-Fi virtualizado e um túnel
virtio-net
. A conectividade do lado do host depende de sua implantação de hipervisor específica. - Algumas implementações podem oferecer capacidade Bluetooth limitada ou inexistente.
- Uma injeção de evento VHAL pode não funcionar para alguns sensores.
- Algumas cargas de trabalho pesadas podem causar falhas na reprodução de áudio.
- Em algumas implementações, a reinicialização adb do convidado AAOS pode reinicializar todo o sistema.
- O STS pode causar instabilidade no sistema e exigir uma reinicialização.
Para obter detalhes adicionais, consulte as notas de versão do parceiro para sua implantação específica de trout
.