डीटीओ समर्थन

डिवाइस ट्री ओवरले (डीटीओ) मूल डेटा में संशोधन करने वाले अतिरिक्त ओवरले एफडीटी को लोड करके रनटाइम पर कर्नेल में प्रारंभिक डिवाइसट्री डेटा को संशोधित करने के लिए उपयोगकर्ता स्थान को सक्षम करके मौजूदा फ़्लैटन्ड डिवाइस ट्री (एफडीटी) कार्यान्वयन का विस्तार करता है। एंड्रॉइड को यूजरस्पेस से डीटी ब्लॉब्स के रनटाइम अपडेट की आवश्यकता नहीं है, बल्कि यह अनुशंसा करता है कि विक्रेता libfdt या libufdt की मदद से बूटलोडर में डिवाइसट्री पैचिंग जोड़ें।

एंड्रॉइड डीटीओ समर्थन

डीटीओ के लिए एंड्रॉइड समर्थन एंड्रॉइड रिलीज़ के अनुसार भिन्न होता है:

  • एंड्रॉइड 7.x और इससे पहले के संस्करण को डिवाइसट्री समर्थन की आवश्यकता नहीं है और विक्रेता कर्नेल में डीटी ब्लॉब्स कैसे पास करते हैं या वे उन्हें कहां संग्रहीत करते हैं, इसके लिए सिफारिशें प्रदान नहीं करते हैं।
  • एंड्रॉइड 8.x कर्नेल के बोर्ड-विशिष्ट और SoC-केवल भागों को अलग रखने के लिए डिवाइसट्री समर्थन की अनुशंसा करता है।
  • एंड्रॉइड 9 और उच्चतर के लिए डिवाइस ट्री ब्लॉब ओवरले (डीटीबीओ) विभाजन मौजूद होना और कम से कम एक डीटीओ लागू होना आवश्यक है।

डीटीओ विभाजन आवश्यकताएँ

अधिकांश एंड्रॉइड डिवाइस बिल्ड समय पर डीटी ब्लॉब को कर्नेल में जोड़ते हैं और बूटलोडर कर्नेल से ब्लॉब को लोड करता है। हालाँकि, क्योंकि DT ब्लॉब्स को सिस्टम-ऑन-चिप (SoC) कर्नेल का हिस्सा माना जाता है, Android के पास DT ब्लॉब्स बनाने या संग्रहीत करने के लिए कोई विशिष्ट आवश्यकता नहीं है। डिवाइस डीटी ब्लॉब को कर्नेल में जोड़ सकते हैं या ब्लॉब को एक अलग विभाजन में संग्रहीत कर सकते हैं; एकमात्र आवश्यकता यह है कि बूटलोडर को पता हो कि डीटी ब्लॉब को कैसे और कहाँ से लोड करना है।

डीटीओ का समर्थन करने के लिए, उपकरणों में ये होना चाहिए:

  • बोर्ड-विशिष्ट डीटी ओवरले के लिए प्रति कर्नेल छवि में एक डीटीबीओ विभाजन और बूटलोडर को पता होना चाहिए कि एसओसी-विशिष्ट डीटीबी को कहां और कैसे लोड करना है। विभाजन का आकार SoC कर्नेल बनाने के लिए आवश्यक परिवर्तनों की संख्या पर निर्भर करता है - भविष्य के अपडेट के लिए बढ़ने की गुंजाइश वाला आकार चुनें; आम तौर पर, 8 एमबी विभाजन का आकार पर्याप्त से अधिक होता है।
  • ए/बी उपकरणों के लिए डीटीओ विभाजन अद्यतन किया गया । पुनर्प्राप्ति कर्नेल एंड्रॉइड कर्नेल के समान है, लेकिन विभाजन को ए/बी उपकरणों के लिए सेट किया जाना चाहिए ताकि इसे ओवर-द-एयर (ओटीए) अपडेट के माध्यम से अपडेट किया जा सके। विभाजन का आकार डिवाइस और मुख्य SoC कर्नेल DT ब्लॉब के शीर्ष पर परिवर्तनों की संख्या पर निर्भर करता है।

डीटीओ बूटलोडर आवश्यकताएँ

डीटीओ का समर्थन करने के लिए, बूटलोडर को यह करना चाहिए:

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

बूटलोडर में डीटीओ के लिए समर्थन जोड़ने के बारे में अधिक जानकारी के लिए, डिवाइस ट्री ओवरले देखें।