Platforma referencyjna

Dzięki nowemu produktowi o nazwie trout firma Android Automotive (AAOS) zapewnia teraz obsługę wdrażania jako gościnna maszyna wirtualna (VM) w środowiskach zgodnych ze standardem VirtIO . trout oparty jest na wirtualnej platformie referencyjnej Cuttlefish i jest dostępny w konfiguracji urządzenia trout . Kod źródłowy przestrzeni użytkownika można znaleźć na device/google/trout . Poniższa tabela opisuje technologię zastosowaną do wirtualizacji każdego z podsystemów w trout .

Funkcja Technologia
Sterowanie dźwiękiem HAL vsock/gRPC
Dźwięk HAL virtio-snd
Bluetooth virtio-console
Stan wysypiska HAL vsock/gRPC
System rozszerzonego widoku (EVS) virtio-video
Tryb garażowy vsock/gRPC
Grafika virtio-gpu
Globalny system nawigacji satelitarnej (GNSS) virtio-console
Czujnik HAL 2.0 virtio-scmi and IIO
Wejście na ekranie dotykowym virtio-input
Pojazd HAL vsock/gRPC

Wydłuż pstrąga

trout można wykorzystać jako punkt wyjścia do tworzenia nowych celów w zakresie pokładowego systemu informacyjno-rozrywkowego (IVI) dla systemu Android. Infrastruktura kompilacji została zaprojektowana z myślą o jej rozbudowie i dostosowaniu. Na przykład:

# 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 ...]

Kilka warstw HAL systemu Android można indywidualnie zastąpić implementacjami niestandardowymi lub zachować implementacje domyślne, ale pewne parametry konfiguracyjne dostosować w celu ustanowienia prawidłowej komunikacji między maszynami wirtualnymi w środowisku docelowym. Te warstwy HAL (w tym HAL pojazdu, HAL sterowania dźwiękiem i HAL Dumpstate) są implementowane za pomocą interfejsu gRPC wspieranego przez połączenie vsock między gościem AAOS a systemem hosta zapewniającym implementację podstawowej funkcji. Należy je skonfigurować, podając odpowiednie parametry połączenia vsock jako właściwości dostawcy. Kod źródłowy działa jako ostateczna podstawowa prawda, na podstawie której dostępne są właściwości do konfiguracji i ich semantyka.

Zbuduj pstrąga

Skompiluj przestrzeń użytkownika

Aby skompilować przestrzeń użytkownika:

  1. Pobierz drzewo źródeł Androida:
    repo init -u https://android.googlesource.com/platform/manifest -b main
    repo sync -j8
    
  2. Zbuduj środowisko:
    source build/envsetup.sh
    lunch aosp_trout_arm64-userdebug
    make -j24
    

Zbuduj jądro

W przypadku trout 1.1 baza kodu jądra jest dostarczana w AOSP. Jądro trout składa się z tego samego kodu, co wcześniejsze ACK 5.10, z dodatkiem modułów specyficznych dla trout dla podsystemów VirtIO.

  1. Aby sklonować jądro, uruchom:
    repo init https://android.googlesource.com/kernel/manifest -b trout-android12-5.10 && repo sync
    
  2. Aby zbudować jądro, uruchom:
    BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
    

Twój dostawca hypervisora ​​może wymagać innej konfiguracji jądra lub dodatkowych modułów, które należy skompilować. Pamiętaj, aby postępować zgodnie z tymi konkretnymi wskazówkami, jeśli je podano.

Zgodność

Gdy AAOS działa jako maszyna wirtualna gościa, naszym celem jest zapewnienie zgodnego wdrożenia systemu Android z perspektywy platformy. Kwestie po stronie hosta leżą w gestii każdej implementacji i wykraczają poza zakres trout 1.1.

Nie przeprowadziliśmy dodatkowej walidacji xTS na trout 1.1. Kontynuuj odwoływanie się do poniższej dyskusji na temat obsługi CTS w trout 1.0.

W trout 1.0 pozostaje kilka problemów związanych z CTS. Wiadomo, że następujące moduły CTS obejmują błędy testów:

CtsStagedInstallHostTestCases
CtsRollbackManagerHostTestCases
Przypadki testowe CtsVideo
Testy CtsHostsideNetwork
CtsActivityManagerBackgroundActivityTestCases
Przypadki testowe CtsAdbHost
Przypadki testowe CtsNativeHardware
CtsContentTestPrzypadki
Przypadki testowe CtsCarHost
Przypadki testowe CtsOs
Przypadki testowe CtsStatsdHost
Przypadki testowe CtsVoiceInteraction
Przypadki testowe CtsView
Przypadki testowe CtsCamera
CtsLocationGnssTestCases
Przypadki testowe CtsGraphics
Przypadki testowe CtsIncidentHost
Przypadki testowe CtsInstallHost
CtsNativeVerifiedBootTestCases
CtsNetTestCases
CtsWindowManagerDeviceTestCases
Przypadki testowe CtsMediaStress
CtsAppTestCases
Testy CtsUsb
Przypadki testowe CtsAutoFillService
Przypadki testowe CtsDisplay
Przypadki testowe CtsMedia
Przypadki testowe CtsDeqp
CtsDumpsysHostTestCases
CtsOpenGLTestCasesCtsLibcoreTestCases
Przypadki testowe CtsSecurityHost
Przypadki testowe CtsInputMethod
CtsStatsdAtomHostPrzypadki testowe
CtsPermission4TestCases
CtsNNAPIBenchmarkTestCases
CtsSimpleperfTestCases
Przypadki testowe CtsAccessibility
CtsAppSecurityHostTestCases
Przypadki testowe CtsKeystore

Wiadomo, że następujące obszary CTS-V obejmują niepowodzenia testów:

Test wyrzutni samochodów
Test reklamodawcy Bluetooth Low Energy (BLE).
Weryfikator jakości strumieniowego wideo
Test urządzenia Bluetooth HID
Test mikrofonu ultradźwiękowego HiFi
Test głośników ultradźwiękowych HiFi
Odblokowane urządzenie Wymagany test
Test dynamicznego wykrywania czujnika
Wyłączony Test czujnika ciała
Znaczący test ruchu
Test powiadamiania o routingu wyjścia audio
Test żądania sieciowego lub sugestii

Informacje o wydaniu

trout 1.1 zawiera następujące znane problemy:

  • Kompilacje trout wykonane przez użytkowników nie są dostępne. System jest zbudowany jako -userdebug , co może mieć wpływ na niektóre testy CTS.
  • Rozruch zweryfikowany systemu Android (AVB) nie jest obsługiwany.
  • Niektóre podsystemy Androida, w tym bezpieczny świat i NNHAL, mogą być niedostępne.
  • Dostęp do sieci dla gości jest zwykle zapewniany za pomocą zwirtualizowanego adaptera Wi-Fi i tunelu virtio-net . Łączność po stronie hosta zależy od konkretnego wdrożenia hypervisora.
  • Niektóre implementacje mogą oferować ograniczoną funkcjonalność Bluetooth lub nie oferować jej wcale.
  • Wstrzykiwanie zdarzeń VHAL może nie działać w przypadku niektórych czujników.
  • Niektóre duże obciążenia mogą powodować zakłócenia w odtwarzaniu dźwięku.
  • W niektórych implementacjach polecenie adb restart gościa AAOS może spowodować ponowne uruchomienie całego systemu.
  • STS może powodować niestabilność systemu i wymagać ponownego uruchomienia.

Aby uzyskać dodatkowe szczegóły, zapoznaj się z informacjami o wersji partnera dotyczącymi konkretnego wdrożenia trout .