Por meio de um novo produto chamado trout
, o Android Automotive (AAOS) agora oferece suporte para implantação como 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 de 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 em trout
.
Característica | Tecnologia |
---|---|
Controle de áudio HAL | vsock/gRPC |
Áudio HAL | virtio-snd |
Bluetooth | virtio-console |
Lixo 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 de tela sensível ao toque | virtio-input |
Veículo HAL | vsock/gRPC |
Extensão de truta
A trout
pode ser usada como ponto de partida para criar novos alvos Android de Infotainment In-Vehicle (IVI). A infraestrutura de compilaçã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árias HALs do Android podem ser substituídas 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. 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.
Truta de construção
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 master repo sync -j8
- Construir o ambiente:
source build/envsetup.sh lunch aosp_trout_arm64-userdebug make -j24
Construindo o núcleo
Para trout
1.0, a base de código do kernel é fornecida em AOSP. O kernel da trout
é composto pelo mesmo código que o ACK 5.10 upstream, com a adição de módulos específicos da 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 para o ambiente OpenSynergy, execute:
BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
Observância
Quando o AAOS é executado como uma VM convidada, nosso objetivo é ser uma implantação compatível do Android do ponto de vista da estrutura. Os problemas do lado do host são da alçada de cada implementação e estão fora do escopo do trout
1.0.
Na trout
1.0, vários problemas 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 carros Teste do anunciante do Bluetooth Low Energy (BLE) Verificador de qualidade de vídeo de streaming Teste de dispositivo Bluetooth HID Teste de microfone de ultra-som de alta fidelidade Teste de alto-falante de ultra-som de alta fidelidade | Teste necessário para 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.0 contém os seguintes problemas conhecidos:
- Construções de usuário de
trout
não estão disponíveis. O sistema é construído como-userdebug
, o que pode afetar alguns testes CTS. - O acesso ao TrustZone para Android não é suportado no
trout
1.0. - A inicialização verificada do Android (AVB) não é compatível.
- Aceleradores neurais não são expostos ao NNAPI na
trout
1.0. - A virtualização Wi-Fi não está disponível, com algumas implementações oferecendo suporte limitado para um túnel `virtio-net`.
- Em alguns casos, a transferência de arquivos grandes de ou para o Android por meio do Android Debug Bridge (ADB) pode fazer com que o sistema trave.
- Em alguns casos, o aplicativo SMS pode parar de sincronizar com um telefone Bluetooth emparelhado.
- Uma injeção de evento VHAL pode não funcionar para alguns sensores.
- O serial ADB do SoC subjacente não é encaminhado para o Android como o serial ADB do convidado.
- Em algumas implementações, a Ethernet pode não estar disponível para o host para conectividade de rede.
Para obter detalhes adicionais, consulte as notas de versão do parceiro para sua implantação específica do trout
.
Por meio de um novo produto chamado trout
, o Android Automotive (AAOS) agora oferece suporte para implantação como 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 de 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 em trout
.
Característica | Tecnologia |
---|---|
Controle de áudio HAL | vsock/gRPC |
Áudio HAL | virtio-snd |
Bluetooth | virtio-console |
Lixo 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 de tela sensível ao toque | virtio-input |
Veículo HAL | vsock/gRPC |
Extensão de truta
A trout
pode ser usada como ponto de partida para criar novos alvos Android de Infotainment In-Vehicle (IVI). A infraestrutura de compilaçã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árias HALs do Android podem ser substituídas 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. 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.
Truta de construção
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 master repo sync -j8
- Construir o ambiente:
source build/envsetup.sh lunch aosp_trout_arm64-userdebug make -j24
Construindo o núcleo
Para trout
1.0, a base de código do kernel é fornecida em AOSP. O kernel da trout
é composto pelo mesmo código que o ACK 5.10 upstream, com a adição de módulos específicos da 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 para o ambiente OpenSynergy, execute:
BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
Observância
Quando o AAOS é executado como uma VM convidada, nosso objetivo é ser uma implantação compatível do Android do ponto de vista da estrutura. Os problemas do lado do host são da alçada de cada implementação e estão fora do escopo do trout
1.0.
Na trout
1.0, vários problemas 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 carros Teste do anunciante do Bluetooth Low Energy (BLE) Verificador de qualidade de vídeo de streaming Teste de dispositivo Bluetooth HID Teste de microfone de ultra-som de alta fidelidade Teste de alto-falante de ultra-som de alta fidelidade | Teste necessário para 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.0 contém os seguintes problemas conhecidos:
- Construções de usuário de
trout
não estão disponíveis. O sistema é construído como-userdebug
, o que pode afetar alguns testes CTS. - O acesso ao TrustZone para Android não é suportado no
trout
1.0. - A inicialização verificada do Android (AVB) não é compatível.
- Aceleradores neurais não são expostos ao NNAPI na
trout
1.0. - A virtualização Wi-Fi não está disponível, com algumas implementações oferecendo suporte limitado para um túnel `virtio-net`.
- Em alguns casos, a transferência de arquivos grandes de ou para o Android por meio do Android Debug Bridge (ADB) pode fazer com que o sistema trave.
- Em alguns casos, o aplicativo SMS pode parar de sincronizar com um telefone Bluetooth emparelhado.
- Uma injeção de evento VHAL pode não funcionar para alguns sensores.
- O serial ADB do SoC subjacente não é encaminhado para o Android como o serial ADB do convidado.
- Em algumas implementações, a Ethernet pode não estar disponível para o host para conectividade de rede.
Para obter detalhes adicionais, consulte as notas de versão do parceiro para sua implantação específica do trout
.