پلت فرم مرجع

از طریق یک محصول جدید به نام trout ، Android Automotive (AAOS) اکنون از استقرار به عنوان ماشین مجازی مهمان (VM) در محیط‌های سازگار با استاندارد VirtIO پشتیبانی می‌کند. trout بر اساس پلت فرم مرجع مجازی Cuttlefish است و به عنوان پیکربندی دستگاه trout در دسترس است. کد منبع فضای کاربران را می‌توانید در device/google/trout پیدا کنید. جدول زیر فناوری مورد استفاده برای مجازی سازی هر یک از زیرسیستم ها در trout را توضیح می دهد.

ویژگی تکنولوژی
کنترل صوتی HAL vsock/gRPC
HAL صوتی virtio-snd
بلوتوث virtio-console
زباله دان HAL vsock/gRPC
سیستم دید گسترده (EVS) virtio-video
حالت گاراژ vsock/gRPC
گرافیک virtio-gpu
سیستم ماهواره ای ناوبری جهانی (GNSS) virtio-console
سنسور HAL 2.0 virtio-scmi and IIO
ورودی صفحه لمسی virtio-input
HAL وسیله نقلیه vsock/gRPC

ماهی قزل آلا را گسترش دهید

trout می توان به عنوان نقطه شروع برای ایجاد اهداف اندرویدی جدید In-Vehicle Infotainment (IVI) استفاده کرد. زیرساخت ساخت به گونه ای طراحی شده است که توسعه یافته و سفارشی شود. به عنوان مثال:

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

چندین HAL Android را می‌توان به‌صورت جداگانه با پیاده‌سازی‌های سفارشی جایگزین کرد، یا پیاده‌سازی‌های پیش‌فرض را حفظ کرد، اما پارامترهای پیکربندی خاصی را برای برقراری ارتباط بین VM مناسب در محیط هدف تنظیم کرد. این HALها (شامل Vehicle HAL، Audio Control HAL و Dumpstate HAL) با استفاده از یک رابط gRPC که توسط یک اتصال vsock بین مهمان AAOS و یک سیستم میزبان که اجرای ویژگی اساسی را ارائه می‌کند، پیاده‌سازی می‌شوند. اینها باید با ارائه پارامترهای اتصال vsock مناسب به عنوان ویژگی های فروشنده پیکربندی شوند. کد منبع به عنوان حقیقت پایه ای نهایی عمل می کند که ویژگی ها برای پیکربندی و معنای آنها در دسترس هستند.

ساخت قزل آلا

فضای کاربران را کامپایل کنید

برای کامپایل فضای کاربری:

  1. درخت منبع اندروید را دانلود کنید:
    repo init -u https://android.googlesource.com/platform/manifest -b main
    repo sync -j8
    
  2. محیط را بسازید:
    source build/envsetup.sh
    lunch aosp_trout_arm64-userdebug
    make -j24
    

هسته را بسازید

برای trout 1.1، پایگاه کد هسته در AOSP ارائه شده است. هسته trout از همان کد ACK 5.10 بالادست تشکیل شده است، با اضافه شدن ماژول های مخصوص trout برای زیرسیستم های VirtIO.

  1. برای کلون کردن هسته، اجرا کنید:
    repo init https://android.googlesource.com/kernel/manifest -b trout-android12-5.10 && repo sync
    
  2. برای ساخت کرنل اجرا کنید:
    BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
    

تامین کننده هایپروایزر شما ممکن است پیکربندی هسته دیگری مورد نیاز یا ماژول های اضافی داشته باشد که باید کامپایل شوند. در صورت ارائه، حتماً از این راهنمایی خاص پیروی کنید.

انطباق

هنگامی که AAOS به عنوان یک VM مهمان اجرا می شود، هدف ما این است که از منظر چارچوب یک استقرار Android سازگار باشد. مسائل جانبی میزبان در حوزه هر اجرا و خارج از محدوده trout 1.1 است.

ما اعتبار سنجی xTS اضافی را در trout 1.1 انجام نداده ایم. به بحث زیر در مورد پشتیبانی CTS در trout 1.0 مراجعه کنید.

در trout 1.0، چندین مشکل CTS باقی مانده است. ماژول‌های CTS زیر شامل خطاهای تست می‌شوند:

CtsStagedInstallHostTestCases
CtsRollbackManagerHostTestCases
CtsVideoTestCases
CtsHostsideNetworkTests
CtsActivityManager BackgroundActivityTestCases
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
CtsNNAPIBBenchmarkTestCases
CtsSimpleperfTestCases
CtsAccessibilityTestCases
CtsAppSecurityHostTestCases
CtsKeystoreTestCases

مناطق CTS-V زیر شامل خرابی های تست می شوند:

تست پرتاب خودرو
تست آگهی دهنده بلوتوث کم مصرف (BLE).
تأیید کننده کیفیت پخش جریانی ویدیو
تست دستگاه بلوتوث HID
تست میکروفون اولتراسوند Hifi
تست اسپیکر سونوگرافی Hifi
تست مورد نیاز دستگاه باز شده
تست کشف سنسور دینامیک
تست سنسور خارج از بدن
تست حرکت مهم
تست اعلان مسیریابی خروجی صدا
تست درخواست یا پیشنهاد شبکه

یادداشت های انتشار

trout 1.1 شامل مسائل شناخته شده زیر است:

  • ساخت کاربر از trout در دسترس نیست. این سیستم به‌عنوان -userdebug ساخته شده است که می‌تواند بر برخی آزمایش‌های CTS تأثیر بگذارد.
  • Android Verified Boot (AVB) پشتیبانی نمی‌شود.
  • ممکن است برخی از زیرسیستم‌های Android از جمله دنیای امن و NNHAL در دسترس نباشند.
  • دسترسی به شبکه مهمان عموماً با استفاده از یک آداپتور Wi-Fi مجازی و یک تونل virtio-net ارائه می شود. اتصال سمت میزبان به استقرار هایپروایزر خاص شما بستگی دارد.
  • برخی از پیاده سازی ها ممکن است قابلیت بلوتوث محدود یا بدون آن را ارائه دهند.
  • تزریق رویداد VHAL ممکن است برای برخی از سنسورها کار نکند.
  • برخی از بارهای کاری سنگین می تواند باعث اختلال در پخش صدا شود.
  • در برخی از پیاده سازی ها، راه اندازی مجدد adb مهمان AAOS ممکن است کل سیستم را راه اندازی مجدد کند.
  • STS می تواند باعث بی ثباتی سیستم شود و نیاز به راه اندازی مجدد داشته باشد.

برای جزئیات بیشتر، به یادداشت های انتشار شریک برای استقرار خاص trout مراجعه کنید.