Referans platform

Android Automotive (AAOS), trout adlı yeni bir ürün aracılığıyla artık VirtIO standardıyla uyumlu ortamlarda konuk sanal makine (VM) olarak dağıtım için destek sağlıyor. trout, Mürekkep Balığı sanal referans platformunu temel alır ve trout cihaz yapılandırması olarak kullanılabilir. Kullanıcı alanı kaynak koduna device/google/trout adresinden ulaşabilirsiniz. Aşağıdaki tabloda, trout'teki alt sistemlerin her birini sanallaştırmak için kullanılan teknoloji açıklanmaktadır.

Özellik Teknoloji
Audio Control HAL vsock/gRPC
Ses HAL virtio-snd
Bluetooth virtio-console
Dumpstate HAL vsock/gRPC
Genişletilmiş Görüntüleme Sistemi (EVS) virtio-video
Garaj modu vsock/gRPC
Grafik virtio-gpu
Küresel navigasyon uydu sistemi (GNSS) virtio-console
Sensor HAL 2.0 virtio-scmi and IIO
Dokunmatik ekran girişi virtio-input
Araç HAL'si vsock/gRPC

Uzatılmış alabalık

trout, yeni Araç İçi Bilgi-Eğlence (IVI) Android hedefleri oluşturmak için başlangıç noktası olarak kullanılabilir. Derleme altyapısı, genişletilebilir ve özelleştirilebilir şekilde tasarlanmıştır. Örnek:

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

Çeşitli Android HAL'leri ayrı ayrı özel uygulamalarla değiştirilebilir veya varsayılan uygulamalar korunabilir ancak belirli yapılandırma parametreleri, hedef ortamda düzgün bir VM içi iletişim kurulacak şekilde ayarlanabilir. Bu HAL'ler (araç HAL'i, ses denetimi HAL'i ve Dumpstate HAL'i dahil), AAOS konuk sistemi ile temel özellik uygulamasını sağlayan bir ana sistem arasında vsock bağlantısı tarafından desteklenen bir gRPC arayüzü aracılığıyla uygulanır. Bunlar, satıcı mülkleri olarak uygun vsock bağlantı parametrelerinin sağlanması yoluyla yapılandırılmalıdır. Kaynak kod, hangi özelliklerin yapılandırılabileceği ve bu özelliklerin semantikleri hakkında nihai doğru kaynaktır.

Alabalık oluşturma

Kullanıcı alanını derleme

Kullanıcı alanını derlemek için:

  1. Android kaynak ağacını indirin:
    repo init -u https://android.googlesource.com/platform/manifest -b main
    repo sync -j8
    
  2. Ortamı derleyin:
    source build/envsetup.sh
    lunch aosp_trout_arm64-userdebug
    make -j24
    

Çekirdeği oluşturma

trout 1.1 için çekirdek kod tabanı AOSP'de sağlanır. trout çekirdeği, VirtIO alt sistemleri için trout'ye özgü modüllerin eklenmesi

  1. Çekirdeği klonlamak için:
    repo init https://android.googlesource.com/kernel/manifest -b trout-android12-5.10 && repo sync
    
  2. Çekirdek çalıştırmayı oluşturmak için:
    BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
    

Hipervizör tedarikçiniz için farklı bir çekirdek yapılandırması gerekebilir veya derlenmesi gereken ek modüller olabilir. Verilmişse bu özel yönergelere uyduğunuzdan emin olun.

Uygunluk

AAOS misafir sanal makine olarak çalışırken amacımız, çerçeve açısından uyumlu bir Android dağıtımı sağlamaktır. Ana makine tarafındaki sorunlar her bir uygulamanın kapsamındadır ve trout 1.1 kapsamında değildir.

trout 1.1 sürümünde ek xTS doğrulaması yapmadık. trout 1.0'daki CTS desteğiyle ilgili aşağıdaki tartışmaya göz atın.

trout 1.0'da birkaç CTS sorunu devam etmektedir. Aşağıdaki CTS modüllerinin test hatalarını içerdiği bilinmektedir:

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

Aşağıdaki CTS-V alanlarında test hatalarının olduğu bilinmektedir:

Car Launcher testi
Bluetooth Düşük Enerji (BLE) Reklamveren testi
Akış Video Kalitesi Doğrulayıcı
Bluetooth HID Cihazı testi
Hifi Ultrason Mikrofon testi
Hifi Ultrason Hoparlör testi
Kilidi Açılmış Cihaz Gerekli testi
Dinamik Sensör Keşfi testi
Vücut Dışındaki Sensör testi
Önemli Hareket testi
Ses Çıkışı Yönlendirme Bildirimi testi
Ağ İsteği veya Önerisi testi

Sürüm notları

trout 1.1 sürümünde aşağıdaki bilinen sorunlar vardır:

  • trout kullanıcı derlemeleri kullanılamıyor. Sistem -userdebug olarak tasarlanmıştır. Bu durum bazı CTS testlerini etkileyebilir.
  • Android Doğrulanmış Önyükleme (AVB) desteklenmez.
  • Güvenli dünya ve NNHAL dahil bazı Android alt sistemleri kullanılamayabilir.
  • Misafir ağı erişimi genellikle sanallaştırılmış bir kablosuz adaptör ve virtio-net tüneli ile sağlanır. Ana makine tarafındaki bağlantı, kullandığınız hipervizör dağıtımına bağlıdır.
  • Bazı uygulamalarda Bluetooth özelliği sınırlı olabilir veya hiç olmayabilir.
  • VHAL etkinlik ekleme işlemi bazı sensörlerde çalışmayabilir.
  • Bazı yoğun iş yükleri ses oynatma sorunlarına neden olabilir.
  • Bazı uygulamalarda, AAOS konuğunun adb ile yeniden başlatılması sistemin tamamını yeniden başlatabilir.
  • STS, sistem kararsızlığına neden olabilir ve yeniden başlatma gerektirebilir.

Daha fazla bilgi için trout dağıtımınızla ilgili iş ortağı sürüm notlarına bakın.