פלטפורמת עזר

באמצעות מוצר חדש בשם trout, מערכת Android Automotive (AAOS) מספקת עכשיו תמיכה לפריסה כמכונה וירטואלית לאורח (VM) בסביבות שתואמות VirtIO רגילה. trout מבוסס על דג דיו פלטפורמת עזר וירטואלית זמינה כתצורת המכשיר trout. ניתן למצוא את קוד המקור של מרחב המשתמש ב-device/google/trout. הטבלה שבהמשך מתוארת הטכנולוגיה שמשמשת לווירטואליזציה של כל אחת ממערכות המשנה ב-trout.

תכונה טכנולוגיה
איכות אודיו עם HAL vsock/gRPC
אודיו HAL virtio-snd
Bluetooth virtio-console
Dumpstate 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 כנקודת התחלה ליצירת מידע ובידור חדש ברכב (IVI) יעדים ל-Android. תשתית ה-build מיועדת להרחבה ולהתאמה אישית. לדוגמה:

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

אפשר להחליף חלק מרכיבי Android HAL בנפרד בהטמעות בהתאמה אישית, או יישומי ברירת המחדל נשמרו, אך פרמטרים מסוימים של התצורה הותאמו כדי ליצור תקשורת תקינה בין מכונות וירטואליות בסביבת היעד. הדרישות של הנחיות HAL (כולל HAL לרכב) Audio Control HAL ו-Dumpstate HAL) מוטמעים באמצעות ממשק gRPC שמגובה על ידי החיבור של vsock בין אורח AAOS לבין מערכת מארחת שמספקת את בהטמעה של התכונה הבסיסית. יש להגדיר אותם באמצעות אספקת vsock פרמטרים של חיבור כמאפייני ספק. קוד המקור פועל באופן האולטימטיבי אמת קרקע שבה המאפיינים זמינים לתצורה והסמנטיקה שלהם.

בונים דג

יצירה של מרחב המשתמשים

כדי להדר את מרחב המשתמשים:

  1. מורידים את עץ המקור של Android:
    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
    

פיתוח הליבה (kernel)

בשביל trout 1.1, בסיס הקוד של הליבה (kernel) מסופק ב-AOSP. trout הליבה מורכבת מאותו קוד כמו ACK 5.10 ב-upstream, בתוספת של מודולים ספציפיים ל-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
    

יכול להיות שלספק ה-hypervisor שלכם יש הגדרת ליבה שונה או הגדרות נוספות של רכיבים שצריך להדר. חשוב לפעול לפי ההנחיות הספציפיות האלה, אם הן מפורטות כאן.

תאימות

כש-AAOS פועל כמכונה וירטואלית לאורח, המטרה שלנו היא להיות פריסה תואמת ל-Android מנקודת המבט של ה-framework. בעיות בצד המארח הן תחומים הקשורים לכל הטמעה ומחוץ היקף של trout 1.1.

לא ביצענו אימות xTS נוסף בתאריך 1.1 של trout. כן, אני רוצה להתייחס לדיון שבהמשך לגבי תמיכה ב-CTS בtrout 1.0.

בגרסה 1.0 של trout נותרו כמה בעיות שקשורות ל-CTS. המודולים הבאים של CTS ידועים כולל כשלים בבדיקה:

CtsStagedInstallHostTestCases
CtsRollbackManagerHostTestCases
CtsVideoTestCases
בדיקות CtsHostsideNetworkTest
CtsActivityManagerBackgroundActivityTestCases
CtsAdbHostTestCases
CtsNativeHardwareTestCases
CtsContentTestCases
CtsCarHostTestCases
CtsOsTestCases
CtsStatsdHostTestCases
CtsVoiceInteractionTestCases
CtsViewTestCases
מקרי Cts CameraTestCases
CtsLocationGnssTestCases
CtsCharticsTestCases
CtsIncidentHostTestCases
CtsInstallHostTestCases
CtsNativeVerifyBootTestCases
CtsNetTestCases
CtsWindowManagerDeviceTestCases
CtsMediaStressTestCases
CtsAppTestCases
בדיקות CtsUsbTest
CtsfillServiceTestCases
CtsDisplayTestCases
CtsMediaTestCases
CtsDeqpTestCases
CtsDumpsysHostTestCases
CtsOpenGLTestCasesCtsLibcoreTestCases
CtsSecurityHostTestCases
CtsInputMethodTestCases
CtsStatsdAtomHostTestCases
CtsAuthor4TestCases
CtsNNAPIAPItestCases
CtsSimpleperfTestCases
CtsAccessibilityTestCases
CtsAppSecurityHostTestCases
CtsKeystoreTestCases

התחומים הבאים של CTS-V כוללים כשלים בבדיקות:

בדיקה של מרכז האפליקציות ברכב
בדיקת מפרסם של Bluetooth עם צריכת אנרגיה נמוכה (BLE)
כלי לאימות איכות של וידאו בסטרימינג
בדיקה של מכשיר Bluetooth HID
בדיקת מיקרופון Hifi Ultrasound
בדיקת רמקול Hifi לאלטרסאונד
בדיקה של נדרש מכשיר שנעילתו בוטלה
בדיקת גילוי חיישנים דינמיים
בדיקה של החיישן הגוף כבוי
בדיקת תנועה משמעותית
בדיקה של התראות לגבי ניתוב פלט האודיו
בקשת רשת או בדיקת הצעה

נתוני גרסה

הבעיות המוכרות הבאות trout 1.1:

  • גרסאות build של משתמשים ב-trout לא זמינות. המערכת בנויה -userdebug, מה שיכול להשפיע על חלק מבדיקות ה-CTS.
  • הפעלה מאומתת של Android (AVB) לא נתמכת.
  • יכול להיות שחלק ממערכות המשנה של Android לא יהיו זמינות, כולל 'עולם מאובטח' ו-NNHAL.
  • הגישה לרשת לאורחים ניתנת בדרך כלל באמצעות מתאם Wi-Fi וירטואלי virtio-net מנהרה. הקישוריות בצד המארח תלויה בפריסה הספציפית של hypervisor.
  • יכול להיות שבהטמעות מסוימות אפשרות ה-Bluetooth תהיה מוגבלת או שלא תהיה אפשרות להשתמש בו בכלל.
  • יכול להיות שהזרקה של אירוע VHAL לא תפעל בחיישנים מסוימים.
  • חלק מעומסי העבודה הכבדים עלולים לגרום לתקלות בהפעלת האודיו.
  • בהטמעות מסוימות, הפעלה מחדש של adb על ידי אורח AAOS עשויה להפעיל מחדש את המערכת כולה.
  • STS עלול לגרום לאי יציבות במערכת ויהיה צורך להפעיל מחדש.

לפרטים נוספים, אפשר לעיין בנתוני הגרסה של השותף בנוגע לפריסה הספציפית של trout