डीटीओ को लागू करना

DTO को लागू करने में डिवाइस ट्री, बिल्डिंग, विभाजन, और रनिंग को विभाजित करना शामिल है। आपके पास एक कार्यशील कार्यान्वयन होने के बाद, आपको दो DT के बीच संगतता बनाए रखनी होगी और प्रत्येक DT विभाजन की सुरक्षा सुनिश्चित करने के लिए एक रणनीति निर्धारित करनी होगी।

डीटी को विभाजित करना

डिवाइस ट्री को दो (2) भागों में विभाजित करके शुरू करें:

  • मुख्य डीटी । SoC- केवल भाग और डिफ़ॉल्ट विन्यास, SoC विक्रेता द्वारा प्रदान किया गया।
  • ओवरले डीटी । उपकरण-विशिष्ट कॉन्फ़िगरेशन, ODM / OEM द्वारा प्रदान किया गया है।

डिवाइस के पेड़ों को विभाजित करने के बाद, आपको मुख्य डीटी और ओवरले डीटी के बीच संगतता सुनिश्चित करनी चाहिए, ताकि डिवाइस के लिए पूर्ण डीटी में मुख्य डीटी और ओवरले डीटी परिणामों का विलय हो सके। डीटीओ प्रारूप और नियमों के विवरण के लिए, डीटीओ सिंटैक्स देखें। मल्टीपल डिवाइस ट्री के विवरण के लिए, मल्टीपल डीटी देखें।

मुख्य और ओवरले डीटी का निर्माण

मुख्य डीटी बनाने के लिए:

  1. मुख्य डीटी संकलित .dts में .dtb फ़ाइल।
  2. फ्लैश .dtb फ़ाइल को एक बूटलोडर रनटाइम-सुलभ पार्टीशन (नीचे विस्तृत) में।

ओवरले डीटी के निर्माण के लिए:

  1. संकलन ओवरले डीटी .dts में .dtbo फ़ाइल। जबकि यह फ़ाइल स्वरूप .dtb फ़ाइल के रूप में एक चपटा डिवाइस ट्री के रूप में स्वरूपित है, अलग फ़ाइल एक्सटेंशन इसे मुख्य DT से अलग करता है।
  2. एक बूटलोडर रन-सुलभ विभाजन में फ्लैश .dtbo फ़ाइल (जैसा कि नीचे विस्तृत है)।

DTC के साथ संकलन करने और होस्ट पर DTO परिणामों की पुष्टि करने के विवरण के लिए, संकलन और सत्यापन देखें

विभाजन डी.टी.

.dtb और .dtbo को फ्लैश मेमोरी में एक बूटलोडर रन-सुलभ और विश्वसनीय स्थान .dtbo

मुख्य DT के लिए उदाहरण स्थान:

  • बूट विभाजन का एक हिस्सा, कर्नेल ( image.gz ) में जोड़ा गया।
  • अलग डीटी धब्बे ( .dtb ) में समर्पित विभाजन ( dtb )।

ओवरले डीटी के लिए उदाहरण स्थान:

अनोखा विभाजन
चित्र 1. एक अनोखे विभाजन में .dtbo डालें, जैसे dtbo विभाजन।
ODM विभाजन
चित्रा 2. रखें .dtbo में odm विभाजन (अपने बूटलोडर का फाइल सिस्टम से डेटा लोड करने के लिए क्षमता है ही अगर ऐसा करने odm विभाजन)।

नोट: ओवरले डीटी विभाजन का आकार डिवाइस पर निर्भर करता है और मुख्य डीटी ब्लॉब के शीर्ष पर आवश्यक परिवर्तनों की मात्रा। आमतौर पर, 8 एमबी पर्याप्त से अधिक है और आवश्यकता होने पर भविष्य में कमरे को बढ़ने की अनुमति देता है।

सहज (ए / बी) अपडेट का समर्थन करने वाले उपकरणों के लिए, ए / बी मुख्य डीटी और ओवरले डीटी विभाजन:

उदाहरण 1
चित्रा 3. डीटीबीओ विभाजन ए / बी, उदाहरण 1।
उदाहरण 2
चित्रा 4. DTBO विभाजन ए / बी, उदाहरण 2।

बूटलोडर में चल रहा है

चलाने के लिए:

चित्रा 5. बूटलोडर में डिवाइस ट्री ओवरले के लिए विशिष्ट रनटाइम कार्यान्वयन।
  1. मेमोरी में स्टोरेज से लोड .dtb
  2. मेमोरी में स्टोरेज से लोड .dtbo
  3. ओवरले .dtb साथ .dtbo एक डीटी विलय कर दिया जाना है।
  4. मर्ज किए गए DT का मेमोरी एड्रेस दिया हुआ कर्नेल प्रारंभ करें।

अनुकूलता बनाए रखना

मुख्य DTB (SoC विक्रेता से) को DTBOs के लिए API सतह के रूप में माना जाता है। डिवाइस के पेड़ को SoC- आम हिस्से में और डिवाइस-विशिष्ट भाग को अलग करने के बाद, आपको भविष्य में दो हिस्सों को परस्पर संगत रखना होगा, जिसमें शामिल हैं:

  • मुख्य डीटी में डीटी परिभाषा (जैसे नोड्स, गुण, लेबल) । मुख्य डीटी में कोई भी परिभाषा परिवर्तन ओवरले डीटी में परिवर्तन को ट्रिगर कर सकता है। उदाहरण के लिए, मुख्य डीटी में एक नोड नाम को सही करने के लिए, एक "उपनाम" लेबल को परिभाषित करें जो मूल नोड नाम पर मैप करता है (ओवरले डीटी के परिवर्तन से बचने के लिए)।
  • ओवरले डीटी स्टोर का स्थान (जैसे विभाजन नाम, स्टोर प्रारूप)

सुरक्षा सुनिश्चित करना

बूटलोडर को सुनिश्चित करना चाहिए कि DTB / DTBO सुरक्षित, अनमॉडिफाइड और अनियंत्रित है। आप DTB / DTBO को सुरक्षित करने के लिए किसी भी समाधान का उपयोग कर सकते हैं, उदाहरण के लिए, VBoot 1.0 में बूट छवि हस्ताक्षर या AVB HASH पाद (VBoot 2.0)।

  • यदि DTB / DTBO एक अद्वितीय विभाजन में है, तो आप उस विभाजन को AVB की विश्वास श्रृंखला में जोड़ सकते हैं। ट्रस्ट श्रृंखला ट्रस्ट के हार्डवेयर-संरक्षित रूट से शुरू होती है और बूटलोडर तक जाती है, जो DTB / DTBO विभाजन की अखंडता और प्रामाणिकता की पुष्टि करती है।
  • यदि DTB / DTBO एक मौजूदा पार्टीशन (जैसे कि odm विभाजन) में है, तो वह विभाजन AVB के विश्वास श्रंखला में होना चाहिए। (DTBO विभाजन odm विभाजन के साथ एक सार्वजनिक कुंजी साझा कर सकता है)।

विवरण के लिए, सत्यापित बूट का संदर्भ लें।