פלטפורמת עזר

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

תכונה טכנולוגיה
Audio Control HAL vsock/gRPC
Audio HAL virtio-snd
Bluetooth virtio-console
Dumpstate HAL vsock/gRPC
מערכת התצוגה החיצונית (EVS) virtio-video
מצב חנייה vsock/gRPC
גרפיקה virtio-gpu
מערכת עולמית לניווט לווייני (GNSS) virtio-console
Sensor HAL 2.0 virtio-scmi and IIO
קלט ממסך מגע virtio-input
Vehicle 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 ...]

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

Build trout

קומפילציה של מרחב המשתמש

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

  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
    

בניית הליבה

ב-trout 1.1, בסיס הקוד של הליבה מסופק ב-AOSP. הליבה trout מורכבת מאותו קוד כמו ACK 5.10 במעלה הזרם, עם תוספת של מודולים ספציפיים ל-trout למערכות משנה של VirtIO.

  1. כדי לשכפל את ליבת ה-kernel, מריצים את הפקודה:
    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
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

האזורים הבאים ב-CTS-V ידועים ככאלה שכוללים כשלים בבדיקות:

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

נתוני גרסה

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

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

פרטים נוספים מופיעים בהערות המוצר של השותף לגבי הפריסה הספציפית של trout.