AAOS Software Defined Vehicle (एसडीवी) प्लैटफ़ॉर्म, इलेक्ट्रॉनिक कंट्रोल यूनिट (ईसीयू) से टाइम सोर्स की रिपोर्टिंग के लिए स्टैंडर्ड मैकेनिज़्म तय करता है. साथ ही, स्टैंडर्ड इंटरफ़ेस तय करता है, ताकि एसडीवी इंस्टेंस में समय की जानकारी दिखाई जा सके. इस पेज पर, एसडीवी स्टैंडर्ड के बारे में जानकारी और दिशा-निर्देश दिए गए हैं.
क्लॉक आर्किटेक्चर
एसडीवी प्लैटफ़ॉर्म में दो स्टैंडर्ड क्लॉक होती हैं:
यूटीसी क्लॉक: यह स्टैंडर्ड कोऑर्डिनेटेड यूनिवर्सल टाइम क्लॉक है. SOME/IP आम तौर पर, ईसीयू से प्लैटफ़ॉर्म रनटाइम को यह जानकारी देता है. इसके इस्तेमाल के उदाहरणों में, सर्टिफ़िकेट की अप-टू-डेट जानकारी, डाइग्नोस्टिक्स, और V2X शामिल हैं.
नेटवर्क मॉनोटोनिक क्लॉक: यह ईसीयू से मिलने वाला, ज़्यादा सटीक क्लॉक सिग्नल है. यह कभी कम नहीं होता. इसका इस्तेमाल, वाहन के आर्किटेक्चर में यह पक्का करने के लिए किया जाता है कि इवेंट को कोऑर्डिनेट किया जाए. ईसीयू, gPTP के ज़रिए एसडीवी प्लैटफ़ॉर्म को यह जानकारी देते हैं. इस क्लॉक को स्टेडी क्लॉक भी कहा जाता है.
एसडीवी प्लैटफ़ॉर्म में मौजूद क्लॉक के लिए, आर्किटेक्चर से जुड़ी कुछ खास ज़रूरतें होती हैं:
क्लॉक डिलीवरी: हर वीएम इंस्टेंस को, ईसीयू से मिलने वाले एक ही मॉनोटोनिक क्लॉक सिग्नल का ऐक्सेस मिलता है.
क्लॉक इंटिग्रिटी: नेटवर्क मॉनोटोनिक क्लॉक इनपुट को, सेवाओं के बीच इवेंट को कोऑर्डिनेट करने के लिए भरोसेमंद सोर्स माना जाता है. रिप्ले अटैक या टाइम इनवर्ज़न जैसी संभावित सिस्टम की कमज़ोरियों से बचाव, मॉनोटोनिक क्लॉक की इंटिग्रिटी पर निर्भर करता है.
अलार्म का इस्तेमाल: एसडीवी प्लैटफ़ॉर्म क्लॉक एपीआई का इस्तेमाल, ज़्यादा फ़्रीक्वेंसी वाले इवेंट (100 हर्ट्ज़ से ज़्यादा) या शेड्यूल करने और इवेंट के समय के बीच 10 मि॰से॰ से कम की लेटेन्सी वाले इवेंट के लिए नहीं किया जाना चाहिए. ज़्यादा फ़्रीक्वेंसी या कम लेटेन्सी वाले एपीआई के लिए, कर्नल ड्राइवर का इस्तेमाल किया जाना चाहिए.
घड़ी एपीआई
नेटवर्क मॉनोटोनिक क्लॉक को, स्टैंडर्ड clock_gettime(3) एपीआई के ज़रिए दिखाया जाता है:
// Network monotonic clock uses standard Linux API.
// This is represented as a dynamic clock in clock_gettime(3)
clock_gettime(clockid_t id, ×pec)
यह क्लॉक, सभी वीएम को पीटीपी नेटवर्क मैकेनिज़्म के ज़रिए मिलती है. इसे clock_gettime(3) के लिए, डाइनैमिक क्लॉक के तौर पर रजिस्टर किया जाता है.
clock_gettime(3) में यूटीसी क्लॉक को CLOCK_REALTIME के तौर पर दिखाया जाता है.
डिवाइस ड्राइवर (ज़रूरी नहीं)
ओईएम के पास, समय की अन्य प्रॉपर्टी के लिए Linux डिवाइस ब्लॉक दिखाने का विकल्प होता है. इसे sepolicy के ज़रिए, अनुमतियों को मैनेज करने की सुविधा के साथ दिखाएं:
# in device/OEM/target/sepolicy/time/file_contexts
/dev/sdvtime u:object_r:time_device:s0
कस्टम Linux डिवाइस ड्राइवर को डेवलप करने और उसकी क्षमताओं के लिए ओईएम ज़िम्मेदार होते हैं. यह ड्राइवर, डिवाइस ब्लॉक के लिए एपीआई दिखाता है.
सूचनाएं और कॉलबैक
एसडीवी में, समय के कॉम्पोनेंट के लिए सूचनाएं और कॉलबैक, यूज़रलैंड की ऐसी सुविधाएं हैं जो ओईएम उपलब्ध कराते हैं. एसडीवी प्लैटफ़ॉर्म, इन फ़ंक्शन के लिए खास एपीआई उपलब्ध नहीं कराता.
हर वीएम के लिए, ज़्यादा से ज़्यादा एक ओईएम सेवा होनी चाहिए. इसके लिए, टाइम सिंक की सुविधा ज़रूरी है, ताकि समय में होने वाले सभी ज़रूरी बदलावों पर नज़र रखी जा सके. उदाहरण के लिए, मौजूदा टाइम सोर्स के लिए, भरोसेमंद स्थिति में बदलाव होने पर:
टाइम सोर्स की स्थितियों में बदलाव, कम फ़्रीक्वेंसी वाले इवेंट के तौर पर होने की उम्मीद है. इसलिए, ओईएम सेवा, पोलिंग के ज़रिए बदलावों की जांच कर सकती है. उदाहरण के लिए, हर मिनट में एक बार.
ईसीयू, यूटीसी क्लॉक की भरोसेमंद स्थिति के स्टेटस की जानकारी नेटवर्क के ज़रिए देते हैं. उदाहरण के लिए, SOME/IP के ज़रिए.
ओईएम सेवा, इन बदलावों को सदस्यों को दिखाने के लिए, खास डेटा टनल के विषय पब्लिश करती है.
ओईएम, सेवाओं के लिए अनुमति की नीति को कस्टमाइज़ करते हैं, ताकि यह तय किया जा सके कि भरोसेमंद टाइम स्टेट में होने वाले बदलावों को सुनने के लिए, कौनसी सेवाएं डेटा टनल के इन विषयों की सदस्यता ले सकती हैं.
गड़बड़ी का स्टेटस और उसे ठीक करना
गड़बड़ी के कोड, शामिल स्टैंडर्ड Linux एपीआई के नियमों के मुताबिक होते हैं. उदाहरण के लिए:
अगर
clock_gettime()में गड़बड़ी होती है, तो यह-1दिखाता है औरerrnoसेट हो जाता है. इसका मतलब है कि क्लॉक ऑपरेशन काम नहीं करता या क्लॉक का सोर्स तैयार नहीं है.अगर
fopen()में गड़बड़ी होती है, तो यह नल पॉइंटर दिखाता है औरerrnoसेट हो जाता है. इसका मतलब है कि ब्लॉक डिवाइस उपलब्ध नहीं है.अगर
ioctl()कॉल में गड़बड़ी होती है, तो यह-1दिखाता है औरerrnoसेट हो जाता है. इसका मतलब है कि बताए गए अनुरोध कोड का, ड्राइवर से मेल खाने वाला कोई जवाब नहीं है.