DTOs বাস্তবায়ন

ডিটিও বাস্তবায়নে ডিভাইস ট্রি ভাগ করা, বিল্ডিং, পার্টিশন করা এবং চালানো জড়িত। আপনার একটি কার্যকরী বাস্তবায়নের পরে, আপনাকে অবশ্যই দুটি DT-এর মধ্যে সামঞ্জস্য বজায় রাখতে হবে এবং প্রতিটি DT পার্টিশনের নিরাপত্তা নিশ্চিত করার জন্য একটি কৌশল নির্ধারণ করতে হবে।

ডিটি ভাগ করা

ডিভাইস গাছটিকে দুটি (2) অংশে ভাগ করে শুরু করুন:

  • প্রধান ডিটি । শুধুমাত্র SoC-এর অংশ এবং ডিফল্ট কনফিগারেশন, SoC বিক্রেতা দ্বারা প্রদত্ত।
  • ওভারলে ডিটি ডিভাইস-নির্দিষ্ট কনফিগারেশন, ODM/OEM দ্বারা প্রদত্ত।

ডিভাইস ট্রি বিভক্ত করার পরে, আপনাকে অবশ্যই মেইন ডিটি এবং ওভারলে ডিটি-এর মধ্যে সামঞ্জস্যতা নিশ্চিত করতে হবে যাতে মেইন ডিটি এবং ওভারলে ডিটি একত্রিত করার ফলে ডিভাইসের জন্য একটি সম্পূর্ণ ডিটি হয়৷ ডিটিও ফরম্যাট এবং নিয়ম সম্পর্কে বিস্তারিত জানার জন্য, ডিটিও সিনট্যাক্স দেখুন। একাধিক ডিভাইস গাছের বিস্তারিত জানার জন্য, একাধিক DTs দেখুন।

বিল্ডিং প্রধান এবং ওভারলে DTs

প্রধান ডিটি তৈরি করতে:

  1. প্রধান DT .dts .dtb ফাইলে কম্পাইল করুন।
  2. একটি বুটলোডার রানটাইম-অ্যাক্সেসযোগ্য পার্টিশনে .dtb ফাইল ফ্ল্যাশ করুন (নিচে বিস্তারিত)।

ওভারলে ডিটি তৈরি করতে:

  1. ওভারলে DT .dts .dtbo ফাইলে কম্পাইল করুন। যদিও এই ফাইল ফরম্যাটটি .dtb ফাইলের মতই একটি সমতল ডিভাইস ট্রি হিসাবে ফর্ম্যাট করা হয়, ভিন্ন ফাইল এক্সটেনশন এটিকে প্রধান DT থেকে আলাদা করে।
  2. একটি বুটলোডার রানটাইম-অ্যাক্সেসযোগ্য পার্টিশনে .dtbo ফাইল ফ্ল্যাশ করুন (নিচে বিস্তারিত হিসাবে)।

DTC এর সাথে কম্পাইল করা এবং হোস্টে DTO ফলাফল যাচাই করার বিষয়ে বিস্তারিত জানার জন্য, কম্পাইলিং এবং যাচাইকরণ দেখুন।

ডিটি পার্টিশন করা

.dtb এবং .dtbo রাখার জন্য ফ্ল্যাশ মেমরিতে একটি বুটলোডার রানটাইম অ্যাক্সেসযোগ্য এবং বিশ্বস্ত অবস্থান নির্ধারণ করুন।

প্রধান DT-এর উদাহরণ অবস্থান:

  • বুট পার্টিশনের অংশ, কার্নেলের সাথে যুক্ত করা হয়েছে ( image.gz )।
  • ডেডিকেটেড পার্টিশনে ( dtb ) আলাদা ডিটি ব্লবস ( .dtb )।

ওভারলে ডিটির জন্য উদাহরণ অবস্থান:

ইউনিক পার্টিশন
চিত্র 1. একটি অনন্য পার্টিশনে .dtbo রাখুন, যেমন dtbo পার্টিশন।
ODM পার্টিশন
চিত্র 2. odm পার্টিশনে .dtbo রাখুন (এটি শুধুমাত্র তখনই করুন যদি আপনার বুটলোডারের odm পার্টিশনের ফাইল সিস্টেম থেকে ডেটা লোড করার ক্ষমতা থাকে)।

দ্রষ্টব্য: ওভারলে ডিটি পার্টিশনের আকার ডিভাইসের উপর নির্ভর করে এবং প্রধান DT ব্লবের উপরে প্রয়োজনীয় পরিবর্তনের পরিমাণ। সাধারণত, 8 এমবি পর্যাপ্ত থেকে বেশি এবং প্রয়োজন হলে ভবিষ্যতে রুম বাড়তে দেয়।

নিরবিচ্ছিন্ন (A/B) আপডেট সমর্থন করে এমন ডিভাইসগুলির জন্য, A/B প্রধান DT এবং ওভারলে DT পার্টিশন:

উদাহরণ 1
চিত্র 3. DTBO পার্টিশন A/B, উদাহরণ 1।
উদাহরণ 2
চিত্র 4. DTBO পার্টিশন A/B, উদাহরণ 2।

বুটলোডারে চলছে

চালানোর জন্য:

চিত্র 5. বুটলোডারে ডিভাইস ট্রি ওভারলের জন্য সাধারণ রানটাইম বাস্তবায়ন।
  1. স্টোরেজ থেকে মেমরিতে .dtb লোড করুন।
  2. স্টোরেজ থেকে মেমরিতে .dtbo লোড করুন।
  3. .dtb এর সাথে .dtbo একত্রিত DT হতে ওভারলে করুন।
  4. মার্জ করা DT-এর মেমরি ঠিকানা দেওয়া স্টার্ট কার্নেল।

সামঞ্জস্য বজায় রাখা

প্রধান DTB (SOC বিক্রেতার কাছ থেকে) DTBO-এর জন্য একটি API পৃষ্ঠ হিসাবে বিবেচিত হয়। ডিভাইস ট্রিটিকে একটি SoC-সাধারণ অংশ এবং একটি ডিভাইস-নির্দিষ্ট অংশে আলাদা করার পরে, আপনাকে অবশ্যই ভবিষ্যতে দুটি অংশকে পারস্পরিকভাবে সামঞ্জস্যপূর্ণ রাখতে হবে, যার মধ্যে রয়েছে:

  • প্রধান DT-তে DT সংজ্ঞা (যেমন নোড, বৈশিষ্ট্য, লেবেল) । প্রধান DT-তে যেকোন সংজ্ঞা পরিবর্তন ওভারলে DT-তে পরিবর্তন আনতে পারে। উদাহরণস্বরূপ, প্রধান DT-এ একটি নোডের নাম সংশোধন করতে, একটি "উনাম" লেবেল সংজ্ঞায়িত করুন যা মূল নোডের নামের সাথে মানচিত্র করে (ওভারলে DT পরিবর্তন এড়াতে)।
  • ওভারলে ডিটি স্টোরের অবস্থান (যেমন পার্টিশনের নাম, স্টোরের বিন্যাস)

নিরাপত্তা নিশ্চিত করা

বুটলোডারকে অবশ্যই নিশ্চিত করতে হবে যে DTB/DTBO সুরক্ষিত, অপরিবর্তিত এবং অনিয়মিত। আপনি DTB/DTBO সুরক্ষিত করার জন্য যেকোনো সমাধান ব্যবহার করতে পারেন, উদাহরণস্বরূপ, VBoot 1.0 বা AVB HASH ফুটার (VBoot 2.0) এ বুট ইমেজ স্বাক্ষর

  • যদি DTB/DTBO একটি অনন্য পার্টিশনে থাকে, তাহলে আপনি সেই পার্টিশনটিকে AVB-এর ট্রাস্ট চেইনে যোগ করতে পারেন। ট্রাস্ট চেইনটি বিশ্বাসের একটি হার্ডওয়্যার-সুরক্ষিত রুট থেকে শুরু হয় এবং বুটলোডারে যায়, যা DTB/DTBO পার্টিশনের অখণ্ডতা এবং সত্যতা যাচাই করে।
  • যদি DTB/DTBO একটি বিদ্যমান পার্টিশনে থাকে (যেমন odm পার্টিশন), সেই পার্টিশনটি AVB-এর ট্রাস্ট চেইনে থাকা উচিত। (DTBO পার্টিশন odm পার্টিশনের সাথে একটি পাবলিক কী ভাগ করতে পারে)।

বিস্তারিত জানার জন্য, যাচাইকৃত বুট পড়ুন।