Plataforma de referência

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:

  1. Baixe a árvore de origem do Android:
    repo init -u https://android.googlesource.com/platform/manifest -b master
    repo sync -j8
    
  2. 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.

  1. Para clonar o kernel, execute:
    repo init https://android.googlesource.com/kernel/manifest -b trout-android12-5.10 && repo sync
    
  2. 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:

  1. Baixe a árvore de origem do Android:
    repo init -u https://android.googlesource.com/platform/manifest -b master
    repo sync -j8
    
  2. 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.

  1. Para clonar o kernel, execute:
    repo init https://android.googlesource.com/kernel/manifest -b trout-android12-5.10 && repo sync
    
  2. 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 .