באמצעות מוצר חדש בשם 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
קומפילציה של מרחב המשתמש
כדי לקמפל את מרחב המשתמש:
- מורידים את עץ המקור של Android:
repo init -u https://android.googlesource.com/platform/manifest -b main repo sync -j8
- יוצרים את הסביבה:
source build/envsetup.sh lunch aosp_trout_arm64-userdebug make -j24
בניית הליבה
ב-trout 1.1, בסיס הקוד של הליבה מסופק ב-AOSP. הליבה trout מורכבת מאותו קוד כמו ACK 5.10 במעלה הזרם, עם תוספת של מודולים ספציפיים ל-trout למערכות משנה של VirtIO.
- כדי לשכפל את ליבת ה-kernel, מריצים את הפקודה:
repo init https://android.googlesource.com/kernel/manifest -b trout-android12-5.10 && repo sync
- כדי לבנות את הליבה, מריצים את הפקודה:
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.