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:
- Android kaynak ağacını indirin:
repo init -u https://android.googlesource.com/platform/manifest -b main repo sync -j8
- 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
- Çekirdeği klonlamak için:
repo init https://android.googlesource.com/kernel/manifest -b trout-android12-5.10 && repo sync
- Ç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.