संदर्भ मंच

trout नामक एक नए उत्पाद के माध्यम से, Android Automotive (AAOS) अब VirtIO मानक के साथ संगत वातावरण में अतिथि वर्चुअल मशीन (VM) के रूप में परिनियोजन के लिए समर्थन प्रदान करता है। trout कटलफिश वर्चुअल रेफरेंस प्लेटफॉर्म पर आधारित है और trout डिवाइस कॉन्फ़िगरेशन के रूप में उपलब्ध है। यूजरस्पेस स्रोत कोड device/google/trout पर पाया जा सकता है। नीचे दी गई तालिका trout में प्रत्येक सबसिस्टम को वर्चुअलाइज करने के लिए उपयोग की जाने वाली तकनीक का वर्णन करती है।

विशेषता तकनीकी
ऑडियो नियंत्रण एचएएल vsock/gRPC
ऑडियो एचएएल virtio-snd
ब्लूटूथ virtio-console
डंपस्टेट एचएएल vsock/gRPC
विस्तारित दृश्य प्रणाली (ईवीएस) virtio-video
गैरेज मोड vsock/gRPC
ग्राफिक्स virtio-gpu
ग्लोबल नेविगेशन सैटेलाइट सिस्टम (GNSS) virtio-console
सेंसर एचएएल 2.0 virtio-scmi and IIO
टचस्क्रीन इनपुट virtio-input
वाहन एचएएल vsock/gRPC

ट्राउट का विस्तार

नए इन-व्हीकल इंफोटेनमेंट (IVI) Android लक्ष्यों को बनाने के लिए trout को शुरुआती बिंदु के रूप में इस्तेमाल किया जा सकता है। बिल्ड इंफ्रास्ट्रक्चर को विस्तारित और अनुकूलित करने के लिए डिज़ाइन किया गया है। उदाहरण के लिए:

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

कई एंड्रॉइड एचएएल को व्यक्तिगत रूप से कस्टम कार्यान्वयन के साथ बदला जा सकता है, या डिफ़ॉल्ट कार्यान्वयन को बनाए रखा जा सकता है लेकिन लक्ष्य वातावरण में उचित इंटर-वीएम संचार स्थापित करने के लिए कुछ कॉन्फ़िगरेशन पैरामीटर समायोजित किए जाते हैं। ये एचएएल (व्हीकल एचएएल, ऑडियो कंट्रोल एचएएल और डंपस्टेट एचएएल सहित) एक vsock इंटरफेस के माध्यम से कार्यान्वित किए जाते हैं, जो एएओएस गेस्ट और एक होस्ट सिस्टम के बीच अंतर्निहित सुविधा कार्यान्वयन प्रदान करते हैं। इन्हें विक्रेता गुणों के रूप में उचित vsock कनेक्शन पैरामीटर की आपूर्ति के माध्यम से कॉन्फ़िगर किया जाना चाहिए। स्रोत कोड अंतिम जमीनी सच्चाई के रूप में कार्य करता है, जिस पर कॉन्फ़िगरेशन और उनके शब्दार्थ के लिए गुण उपलब्ध हैं।

बिल्डिंग ट्राउट

यूजरस्पेस संकलित करें

उपयोक्तास्थान संकलित करने के लिए:

  1. Android स्रोत ट्री डाउनलोड करें:
    repo init -u https://android.googlesource.com/platform/manifest -b master
    repo sync -j8
    
  2. परिवेश बनाएँ:
    source build/envsetup.sh
    lunch aosp_trout_arm64-userdebug
    make -j24
    
    3

कर्नेल का निर्माण

trout 1.1 के लिए, एओएसपी में कर्नेल कोडबेस प्रदान किया गया है। trout कर्नेल अपस्ट्रीम एसीके 5.10 के समान कोड से बना है, जिसमें वर्टिओ सबसिस्टम के लिए trout -विशिष्ट मॉड्यूल शामिल हैं।

  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 के दायरे से बाहर हैं।

हमने trout 1.1 पर अतिरिक्त एक्सटीएस सत्यापन नहीं किया है। trout 1.0 में सीटीएस समर्थन की नीचे की चर्चा को जारी रखें।

trout 1.0 में, कई सीटीएस समस्याएँ बनी हुई हैं। निम्नलिखित सीटीएस मॉड्यूल परीक्षण विफलताओं को शामिल करने के लिए जाने जाते हैं:

CtsStagedInstallHostTestCases
CtsRollbackManagerHostTestCases
सीटीएसवीडियो टेस्टकेस
सीटीएस होस्टसाइड नेटवर्क परीक्षण
सीटीएस एक्टिविटी मैनेजर बैकग्राउंड एक्टिविटी टेस्ट केस
सीटीएसएडीबीहोस्टटेस्टकेस
सीटीएस नेटिव हार्डवेयर टेस्ट केस
सीटीएस सामग्री परीक्षण मामले
सीटीएसकारहोस्टटेस्टकेस
CtsOsTestCases
CtsStatsdHostTestCases
CtsVoiceInteractionTestCases
CtsViewTestCases
सीटीएस कैमरा टेस्ट केस
सीटीएस स्थान GnssTestCases
सीटीएस ग्राफिक्स टेस्ट केस
सीटीएसइंसीडेंटहोस्टटेस्टकेस
CtsInstallHostTestCases
CtsNativeसत्यापितBootTestCases
सीटीएसनेट टेस्टकेस
CtsWindowManagerDeviceTestCases
सीटीएस मीडिया तनाव परीक्षण मामले
CtsAppTestCases
सीटीएसयूएसबी टेस्ट
CtsAutoFillServiceTestCases
सीटीएस डिस्प्ले टेस्ट केस
सीटीएस मीडिया टेस्ट केस
CtsDeqpTestCases
CtsDumpsysHostTestCases
सीटीएसओपनजीएलटीटेस्टकेससीटीएसलिबकोरटेस्टकेस
CtsSecurityHostTestCases
CtsInputMethodTestCases
CtsStatsdAtomHostTestCases
CtsPermission4TestCases
सीटीएसएनएपीआईबीबेंचमार्कटेस्टकेस
CtsSimpleperfTestCases
सीटीएस एक्सेसिबिलिटी टेस्टकेस
CtsAppSecurityHostTestCases
सीटीएस कीस्टोर टेस्टकेस

निम्नलिखित सीटीएस-वी क्षेत्रों में परीक्षण विफलताओं को शामिल करने के लिए जाना जाता है:

कार लांचर परीक्षण
ब्लूटूथ कम ऊर्जा (बीएलई) विज्ञापनदाता परीक्षण
स्ट्रीमिंग वीडियो गुणवत्ता सत्यापनकर्ता
ब्लूटूथ छिपाई डिवाइस परीक्षण
Hifi अल्ट्रासाउंड माइक्रोफोन परीक्षण
Hifi अल्ट्रासाउंड अध्यक्ष परीक्षण
अनलॉक डिवाइस आवश्यक परीक्षण
डायनेमिक सेंसर डिस्कवरी टेस्ट
ऑफ बॉडी सेंसर टेस्ट
महत्वपूर्ण गति परीक्षण
ऑडियो आउटपुट रूटिंग अधिसूचना परीक्षण
नेटवर्क अनुरोध या सुझाव परीक्षण

रिलीज नोट्स

trout 1.1 में निम्नलिखित ज्ञात मुद्दे शामिल हैं:

  • trout के उपयोक्ता बिल्ड उपलब्ध नहीं हैं। सिस्टम को -userdebug के रूप में बनाया गया है, जो कुछ सीटीएस परीक्षणों को प्रभावित कर सकता है।
  • Android सत्यापित बूट (AVB) समर्थित नहीं है।
  • कुछ Android सबसिस्टम अनुपलब्ध हो सकते हैं, जिनमें सुरक्षित दुनिया और NNHAL शामिल हैं।
  • अतिथि नेटवर्क का उपयोग आम तौर पर वर्चुअलाइज्ड वाई-फाई एडाप्टर और virtio-net सुरंग के माध्यम से प्रदान किया जाता है। होस्ट-साइड कनेक्टिविटी आपके विशिष्ट हाइपरविजर परिनियोजन पर निर्भर करती है।
  • कुछ कार्यान्वयन सीमित या कोई ब्लूटूथ क्षमता प्रदान नहीं कर सकते हैं।
  • VHAL इवेंट इंजेक्शन कुछ सेंसर के लिए काम नहीं कर सकता है।
  • कुछ भारी वर्कलोड के कारण ऑडियो प्लेबैक ग्लिट्स हो सकते हैं।
  • कुछ कार्यान्वयनों में, AAOS अतिथि का adb रिबूट पूरे सिस्टम को रिबूट कर सकता है।
  • STS के कारण सिस्टम में अस्थिरता हो सकती है और इसके लिए रीबूट की आवश्यकता हो सकती है।

अतिरिक्त विवरण के लिए, trout के अपने विशिष्ट परिनियोजन के लिए पार्टनर रिलीज़ नोट्स देखें।