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

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

डीटी को बांटना

डीटी को दो हिस्सों में बांटकर शुरू करें:

  • मुख्य DT. एसओसी-ओनली पार्ट और डिफ़ॉल्ट कॉन्फ़िगरेशन, एसओसी वेंडर से मिले हैं.
  • ओवरले DT. डिवाइस के हिसाब से कॉन्फ़िगरेशन, जो ओडीएम/ओईएम उपलब्ध कराते हैं.

डीटी को बांटने के बाद, आपको यह पक्का करना होगा कि मुख्य डीटी और ओवरले डीटी एक-दूसरे के साथ काम करते हों. ऐसा इसलिए, ताकि मुख्य डीटी और ओवरले डीटी को मर्ज करने पर, डिवाइस के लिए पूरा डीटी मिल सके. डीटीओ फ़ॉर्मैट और नियमों के बारे में ज़्यादा जानने के लिए, डीटीओ सिंटैक्स देखें. एक से ज़्यादा डीटी के बारे में जानकारी के लिए, एक से ज़्यादा डीटी का इस्तेमाल करना लेख पढ़ें.

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

मुख्य DT बनाने के लिए:

  1. मुख्य डीटी .dts को .dtb फ़ाइल में कंपाइल करें.
  2. .dtb फ़ाइल को बूटलोडर रनटाइम-ऐक्सेस किए जा सकने वाले पार्टीशन में फ़्लैश करें (इसके बारे में [Partition DTs](#partition) में ज़्यादा जानकारी दी गई है).

ओवरले डीटी बनाने के लिए:

  1. ओवरले डीटी .dts को .dtbo फ़ाइल में कंपाइल करें. इस फ़ाइल का फ़ॉर्मैट, फ़्लैट किए गए डीटी के तौर पर फ़ॉर्मैट की गई .dtb फ़ाइल के जैसा ही होता है. हालांकि, फ़ाइल एक्सटेंशन अलग होने की वजह से, यह मुख्य डीटी से अलग होती है.
  2. .dtbo फ़ाइल को बूटलोडर रनटाइम-ऐक्सेस किए जा सकने वाले पार्टीशन में फ़्लैश करें (इसके बारे में [Partition DTs](#partition) में ज़्यादा जानकारी दी गई है).

होस्ट पर डीटीसी के साथ कंपाइल करने और डीटीओ के नतीजों की पुष्टि करने के बारे में जानकारी के लिए, कंपाइल करना और पुष्टि करना लेख पढ़ें.

डेटा ट्रांसफ़र स्कीमा टेबल को पार्टिशन करना

फ़्लैश मेमोरी में, बूटलोडर के रनटाइम के दौरान ऐक्सेस की जा सकने वाली और भरोसेमंद जगह तय करें, ताकि .dtb और .dtbo को वहां रखा जा सके.

मुख्य डीटी के लिए जगहों के उदाहरण:

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

ओवरले डीटी के लिए, जगह की जानकारी के उदाहरण:

पहली इमेज. .dtbo को odm पार्टीशन में रखें. ऐसा सिर्फ़ तब करें, जब आपके बूटलोडर में odm पार्टीशन के फ़ाइल सिस्टम से डेटा लोड करने की सुविधा हो.

दूसरी इमेज. .dtbo को किसी यूनीक पार्टीशन में रखें. जैसे, dtbo पार्टीशन.

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

बिना किसी रुकावट के (A/B) अपडेट करने की सुविधा वाले डिवाइसों के लिए, मुख्य डीटी और ओवरले डीटी के पार्टीशन का A/B टेस्ट करें:

तीसरी इमेज. DTBO पार्टीशन A/B, उदाहरण 1.

चौथी इमेज. DTBO पार्टीशन A/B, दूसरा उदाहरण.

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

इसे चलाने के लिए:

पांचवीं इमेज. बूटलोडर में डीटीओ के लिए, सामान्य तौर पर रनटाइम लागू करना.

  1. स्टोरेज से .dtb को मेमोरी में लोड करें.
  2. स्टोरेज से .dtbo को मेमोरी में लोड करें.
  3. मर्ज किए गए डीटी के तौर पर, .dtb को .dtbo के साथ ओवरले करें.
  4. मर्ज किए गए DT का मेमोरी पता दिए जाने पर, कर्नल शुरू करें.

कंपैटिबिलिटी बनाए रखना

एसओसी वेंडर से मिले मुख्य डीटीबी को डीटीबीओ के लिए एपीआई माना जाता है. डीटी को SoC के सामान्य हिस्से और डिवाइस के हिसाब से हिस्से में बांटने के बाद, आपको यह पक्का करना होगा कि दोनों हिस्से आने वाले समय में एक-दूसरे के साथ काम करें. इनमें ये शामिल हैं:

  • मुख्य डीटी में डीटी की परिभाषा. उदाहरण के लिए, नोड, प्रॉपर्टी, लेबल. मुख्य डीटी में डेफ़िनिशन में हुए किसी भी बदलाव की वजह से, ओवरले डीटी में बदलाव हो सकते हैं. उदाहरण के लिए, मुख्य डीटी में किसी नोड के नाम को ठीक करने के लिए, "alias" लेबल तय करें. यह लेबल, नोड के मूल नाम पर मैप करता है, ताकि ओवरले डीटी में बदलाव न हो.
  • डीटी स्टोर का पता ओवरले करें. उदाहरण के लिए, पार्टीशन का नाम, स्टोर का फ़ॉर्मैट.

सुरक्षा पक्का करना

बूटलोडर को यह पक्का करना होगा कि DTB या DTBO सुरक्षित हो, उसमें कोई बदलाव न किया गया हो, और वह खराब न हो. DTB या DTBO को सुरक्षित करने के लिए, किसी भी समाधान का इस्तेमाल किया जा सकता है. उदाहरण के लिए, VBoot 1.0 में बूट इमेज सिग्नेचर या VBoot 2.0 में AVB हैश फ़ुटर.

  • अगर DTB या DTBO किसी यूनीक पार्टीशन में है, तो उस पार्टीशन को AVB की भरोसेमंद चेन में जोड़ा जा सकता है. भरोसे की चेन, हार्डवेयर से सुरक्षित रूट ऑफ़ ट्रस्ट से शुरू होती है और बूटलोडर तक जाती है. बूटलोडर, DTB या DTBO पार्टीशन की इंटिग्रिटी और पुष्टि करता है.
  • अगर DTB या DTBO किसी मौजूदा पार्टिशन (जैसे कि odm पार्टिशन) में है, तो वह पार्टिशन AVB की ट्रस्ट चेन में होना चाहिए. (DTBO पार्टीशन, odm पार्टीशन के साथ सार्वजनिक कुंजी शेयर कर सकता है).

ज़्यादा जानकारी के लिए, पुष्टि किया गया बूट लेख पढ़ें.