Device Tree Overlay (DTO) پیاده سازی های موجود FDT (Flattened Device Tree) را با فعال کردن فضای کاربران برای اصلاح داده های درخت دستگاه اولیه در هسته در زمان اجرا با بارگذاری FDT های همپوشانی اضافی که داده های اصلی را اصلاح می کنند، گسترش می دهد. اندروید نیازی به بهروزرسانی زمان اجرا حبابهای DT از فضای کاربران ندارد، اما در عوض توصیه میکند که فروشندگان وصله درخت دستگاه را با کمک libfdt
یا libufdt
در بوت لودر اضافه کنند.
پشتیبانی از اندروید DTO
پشتیبانی اندروید از DTO ها بسته به نسخه اندروید متفاوت است:
- Android 7.x و نسخههای قبلی به پشتیبانی درخت دستگاه نیازی ندارد و توصیههایی برای نحوه ارسال حبابهای DT به هسته یا محل ذخیره آنها توسط فروشندگان ارائه نمیشود.
- Android 8.x پشتیبانی از devicetree را برای جدا نگه داشتن بخش های مخصوص برد و فقط SoC از هسته توصیه می کند.
- Android 9 و بالاتر نیاز به یک پارتیشن پوشش درختی دستگاه (DTBO) دارد تا حداقل یک DTO اعمال شود.
الزامات پارتیشن بندی DTO
اکثر دستگاه های اندرویدی DT blob را در زمان ساخت به هسته اضافه می کنند و بوت لودر حباب را از هسته بارگذاری می کند. با این حال، از آنجایی که حبابهای DT بخشی از هسته سیستم روی تراشه (SoC) در نظر گرفته میشوند، اندروید هیچ الزام خاصی برای نحوه ساخت یا ذخیره حبابهای DT ندارد. دستگاه ها می توانند حباب DT را به هسته اضافه کنند یا حباب را در یک پارتیشن جداگانه ذخیره کنند. تنها شرط لازم این است که بوت لودر بداند که چگونه و از کجا DT blob را بارگیری کند.
برای پشتیبانی از DTO، دستگاه ها باید دارای:
- یک پارتیشن DTBO در هر تصویر هسته برای یک همپوشانی DT مخصوص برد و بوت لودر باید بداند کجا و چگونه DTB مخصوص SoC را بارگذاری کند. اندازه پارتیشن به تعداد تغییرات مورد نیاز برای ایجاد هسته SoC بستگی دارد - اندازه ای را انتخاب کنید که فضای بیشتری برای به روز رسانی های آینده داشته باشد. به طور معمول، اندازه پارتیشن 8 مگابایتی بیش از اندازه کافی است.
- پارتیشن های DTO برای دستگاه های A/B به روز شد . هسته بازیابی همانند هسته اندروید است، اما پارتیشن باید برای دستگاههای A/B راهاندازی شود تا بتوان آن را از طریق بهروزرسانیهای خارج از هوا (OTA) بهروزرسانی کرد. اندازه پارتیشن به دستگاه و تعداد تغییرات بالای هسته اصلی SoC DT blob بستگی دارد.
الزامات بوت لودر DTO
برای پشتیبانی از DTO، بوت لودر باید:
- بدانید که چگونه و کجا (با توجه به شکاف بوت برای دستگاههای A/B) برای بارگیری حباب DT مخصوص SoC به روشی خاص فروشنده (معمولاً از انتهای تصویر هسته استخراج میشود و حبابها به هسته اضافه میشوند).
- بدانید که چگونه و از کجا باید حباب DT روکش را به روشی خاص فروشنده بارگیری کنید.
- قبل از ارسال درخت دستگاه ترکیبی به هسته، حباب اصلی DT را با روکش وصله کنید.
برای جزئیات بیشتر در مورد افزودن پشتیبانی از DTO در بوت لودر، Device Tree Overlays را ببینید.