پیاده سازی DTO

پیاده سازی DTO شامل تقسیم درخت دستگاه، ساختن، پارتیشن بندی و اجرا می شود. پس از اجرای کار، باید سازگاری بین دو DT را نیز حفظ کنید و یک استراتژی برای تضمین امنیت هر پارتیشن DT تعیین کنید.

تقسیم DT

با تقسیم درخت دستگاه به دو قسمت (2) شروع کنید:

  • DT اصلی بخش فقط SoC و تنظیمات پیش فرض ارائه شده توسط فروشنده SoC.
  • روکش DT . پیکربندی های خاص دستگاه، ارائه شده توسط ODM/OEM.

پس از تقسیم درختان دستگاه، باید از سازگاری بین DT اصلی و DT روکش اطمینان حاصل کنید تا ادغام DT اصلی و DT روکش منجر به یک DT کامل برای دستگاه شود. برای جزئیات بیشتر در مورد قالب و قوانین DTO، به نحو DTO مراجعه کنید. برای جزئیات بیشتر در مورد چندین درخت دستگاه، به چندین DT مراجعه کنید.

DTهای اصلی و روکش ساختمان

برای ساخت DT اصلی:

  1. DT .dts اصلی را در فایل .dtb کامپایل کنید.
  2. فایل .dtb را در یک پارتیشن قابل دسترسی در زمان اجرا بوت لودر فلش کنید (جزئیات زیر).

برای ساخت همپوشانی DT:

  1. همپوشانی DT .dts را در فایل .dtbo کامپایل کنید. در حالی که این فرمت فایل مشابه فایل .dtb است که به عنوان درخت دستگاه پهن شده فرمت شده است، پسوند فایل متفاوت آن را از DT اصلی متمایز می کند.
  2. فایل .dtbo را در یک پارتیشن قابل دسترسی در زمان اجرا بوت لودر فلش کنید (همانطور که در زیر توضیح داده شده است).

برای جزئیات در مورد کامپایل با DTC و تأیید نتایج DTO در میزبان، به کامپایل و تأیید مراجعه کنید.

پارتیشن بندی DT ها

برای قرار دادن .dtb و .dtbo ، یک مکان قابل دسترسی و قابل اعتماد در زمان اجرا بوت لودر در حافظه فلش تعیین کنید.

مکان های نمونه برای DT اصلی:

  • بخشی از پارتیشن بوت، اضافه شده به هسته ( image.gz ).
  • حباب های DT ( .dtb ) را در پارتیشن اختصاصی ( dtb ) جدا کنید.

مکان‌های نمونه برای DT روکش:

پارتیشن منحصر به فرد
شکل 1. .dtbo در یک پارتیشن منحصر به فرد قرار دهید، به عنوان مثال پارتیشن dtbo .
پارتیشن ODM
شکل 2. .dtbo در پارتیشن odm قرار دهید (این کار را فقط در صورتی انجام دهید که بوت لودر شما توانایی بارگذاری داده ها از سیستم فایل پارتیشن odm را داشته باشد).

توجه: اندازه پارتیشن DT روکش به دستگاه و میزان تغییرات مورد نیاز در بالای حباب اصلی DT بستگی دارد. به طور معمول، 8 مگابایت بیش از حد کافی است و در صورت نیاز، فضای بیشتری را در آینده ایجاد می کند.

برای دستگاه‌هایی که از به‌روزرسانی‌های بدون درز (A/B) پشتیبانی می‌کنند، پارتیشن‌های DT اصلی و DT روکش A/B:

مثال 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) به عنوان یک سطح API برای DTBO ها در نظر گرفته می شود. پس از جدا کردن درخت دستگاه به یک بخش مشترک SoC و یک بخش خاص دستگاه، باید این دو قسمت را در آینده با یکدیگر سازگار نگه دارید، از جمله:

  • تعریف DT در 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 به اشتراک بگذارد).

برای جزئیات، به بوت تایید شده مراجعه کنید.