डीटीओ को लागू करने में डिवाइस ट्री को विभाजित करना, निर्माण करना, विभाजन करना और चलाना शामिल है। आपके पास एक कार्यशील कार्यान्वयन होने के बाद, आपको दो डीटी के बीच अनुकूलता बनाए रखनी होगी और प्रत्येक डीटी विभाजन की सुरक्षा सुनिश्चित करने के लिए एक रणनीति निर्धारित करनी होगी।
डीटी का विभाजन
डिवाइस ट्री को दो (2) भागों में विभाजित करके प्रारंभ करें:
- मुख्य डीटी . SoC-केवल भाग और डिफ़ॉल्ट कॉन्फ़िगरेशन, SoC विक्रेता द्वारा प्रदान किया गया।
- ओवरले डीटी . डिवाइस-विशिष्ट कॉन्फ़िगरेशन, ODM/OEM द्वारा प्रदान किया गया।
डिवाइस ट्री को विभाजित करने के बाद, आपको मुख्य डीटी और ओवरले डीटी के बीच अनुकूलता सुनिश्चित करनी होगी ताकि मुख्य डीटी और ओवरले डीटी को मर्ज करने से डिवाइस के लिए पूर्ण डीटी प्राप्त हो सके। डीटीओ प्रारूप और नियमों के विवरण के लिए, डीटीओ सिंटैक्स देखें। एकाधिक डिवाइस ट्री के विवरण के लिए, एकाधिक डीटी देखें।
मुख्य एवं ओवरले डीटी का निर्माण
मुख्य डीटी बनाने के लिए:
- मुख्य DT
.dts
.dtb
फ़ाइल में संकलित करें। - बूटलोडर रनटाइम-सुलभ विभाजन में फ्लैश
.dtb
फ़ाइल (नीचे विस्तृत)।
ओवरले डीटी बनाने के लिए:
- ओवरले DT
.dts
.dtbo
फ़ाइल में संकलित करें। हालाँकि यह फ़ाइल स्वरूप एक चपटे डिवाइस ट्री के रूप में स्वरूपित.dtb
फ़ाइल के समान है, भिन्न फ़ाइल एक्सटेंशन इसे मुख्य DT से अलग करता है। - बूटलोडर रनटाइम-सुलभ विभाजन में फ्लैश
.dtbo
फ़ाइल (जैसा कि नीचे विस्तृत है)।
डीटीसी के साथ संकलन करने और होस्ट पर डीटीओ परिणामों को सत्यापित करने के विवरण के लिए, संकलन और सत्यापन देखें।
विभाजन डीटी
.dtb
और .dtbo
डालने के लिए फ्लैश मेमोरी में बूटलोडर रनटाइम-सुलभ और विश्वसनीय स्थान निर्धारित करें।
मुख्य डीटी के लिए उदाहरण स्थान:
- बूट विभाजन का भाग, कर्नेल से जुड़ा हुआ (
image.gz
)। - समर्पित विभाजन (
dtb
) में DT ब्लॉब्स (.dtb
) को अलग करें।
ओवरले डीटी के लिए उदाहरण स्थान:
अनोखा विभाजन |
---|
ओडीएम विभाजन |
---|
.dtbo
odm
पार्टीशन में डालें (ऐसा केवल तभी करें जब आपके बूटलोडर में odm
पार्टीशन के फ़ाइल सिस्टम से डेटा लोड करने की क्षमता हो)।नोट: ओवरले डीटी विभाजन का आकार डिवाइस और मुख्य डीटी ब्लॉब के शीर्ष पर आवश्यक परिवर्तनों की मात्रा पर निर्भर करता है। आमतौर पर, 8 एमबी पर्याप्त से अधिक है और आवश्यकता पड़ने पर भविष्य में जगह बढ़ाने की अनुमति देता है।
उन उपकरणों के लिए जो निर्बाध (ए/बी) अपडेट का समर्थन करते हैं, ए/बी मुख्य डीटी और ओवरले डीटी विभाजन:
उदाहरण 1 |
---|
उदाहरण 2 |
---|
बूटलोडर में चल रहा है
चलाने के लिए:
- स्टोरेज से मेमोरी में
.dtb
लोड करें। - स्टोरेज से मेमोरी में
.dtbo
लोड करें। - मर्ज किए गए DT होने के लिए
.dtb
.dtbo
के साथ ओवरले करें। - मर्ज किए गए डीटी का मेमोरी पता देते हुए कर्नेल प्रारंभ करें।
अनुकूलता बनाए रखना
मुख्य डीटीबी (एसओसी विक्रेता से) को डीटीबीओ के लिए एपीआई सतह के रूप में माना जाता है। डिवाइस ट्री को SoC-सामान्य भाग और डिवाइस-विशिष्ट भाग में अलग करने के बाद, आपको भविष्य में दोनों भागों को परस्पर संगत रखना होगा, जिसमें शामिल हैं:
- मुख्य डीटी में डीटी परिभाषा (जैसे नोड्स, गुण, लेबल) । मुख्य डीटी में कोई भी परिभाषा परिवर्तन ओवरले डीटी में परिवर्तन को ट्रिगर कर सकता है। उदाहरण के लिए, मुख्य डीटी में एक नोड नाम को सही करने के लिए, एक "उपनाम" लेबल परिभाषित करें जो मूल नोड नाम पर मैप होता है (ओवरले डीटी के परिवर्तन से बचने के लिए)।
- ओवरले डीटी स्टोर स्थान (जैसे विभाजन नाम, स्टोर प्रारूप) ।
सुरक्षा सुनिश्चित करना
बूटलोडर को यह सुनिश्चित करना होगा कि DTB/DTBO सुरक्षित, असंशोधित और भ्रष्ट न हो। आप DTB/DTBO को सुरक्षित करने के लिए किसी भी समाधान का उपयोग कर सकते हैं, उदाहरण के लिए, VBoot 1.0 या AVB HASH पाद लेख (VBoot 2.0) में बूट छवि हस्ताक्षर ।
- यदि DTB/DTBO एक अद्वितीय विभाजन में है, तो आप उस विभाजन को AVB की ट्रस्ट श्रृंखला में जोड़ सकते हैं। ट्रस्ट श्रृंखला ट्रस्ट के हार्डवेयर-संरक्षित रूट से शुरू होती है और बूटलोडर तक जाती है, जो डीटीबी/डीटीबीओ विभाजन की अखंडता और प्रामाणिकता की पुष्टि करती है।
- यदि DTB/DTBO किसी मौजूदा विभाजन (जैसे
odm
विभाजन) में है, तो वह विभाजन AVB की ट्रस्ट श्रृंखला में होना चाहिए। (डीटीबीओ विभाजनodm
विभाजन के साथ सार्वजनिक कुंजी साझा कर सकता है)।
विवरण के लिए, सत्यापित बूट देखें।