באמצעות מוצר חדש בשם 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
פרמטרים של חיבור כמאפייני ספק. קוד המקור פועל באופן האולטימטיבי
אמת קרקע שבה המאפיינים זמינים לתצורה והסמנטיקה שלהם.
בונים דג
יצירה של מרחב המשתמשים
כדי להדר את מרחב המשתמשים:
- מורידים את עץ המקור של 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
פיתוח הליבה (kernel)
בשביל trout
1.1, בסיס הקוד של הליבה (kernel) מסופק ב-AOSP. trout
הליבה מורכבת מאותו קוד כמו ACK 5.10 ב-upstream, בתוספת של
מודולים ספציפיים ל-trout
למערכות משנה של VirtIO.
- כדי לשכפל את הליבה, מריצים:
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
יכול להיות שלספק ה-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