از 27 مارس 2025، توصیه می کنیم از android-latest-release
به جای aosp-main
برای ساختن و کمک به AOSP استفاده کنید. برای اطلاعات بیشتر، به تغییرات AOSP مراجعه کنید.
پوشش درختی دستگاه
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
درخت دستگاه (DT) یک ساختار داده از گره ها و ویژگی های نامگذاری شده است که سخت افزار غیرقابل کشف را توصیف می کند. هستهها، مانند هسته لینوکس مورد استفاده در اندروید، از DTها برای پشتیبانی از طیف وسیعی از پیکربندیهای سختافزاری مورد استفاده توسط دستگاههای مجهز به اندروید استفاده میکنند. فروشندگان سختافزار فایلهای منبع درختی دستگاه (DTS) خود را ارائه میکنند که با استفاده از کامپایلر درختی دستگاه در فایل blob درخت دستگاه (DTB) کامپایل میشوند. سپس این فایل ها توسط بوت لودر استفاده می شوند. فایل DTB حاوی یک درخت دستگاه پهن شده با فرمت باینری است.
یک پوشش درختی دستگاه (DTO) یک DTB مرکزی را قادر میسازد تا روی DT قرار گیرد (یک حباب درخت دستگاه برای پوشش (DTBO) ). یک بوت لودر با استفاده از DTO می تواند سیستم روی تراشه (SoC) DT را حفظ کند و به صورت پویا یک DT خاص دستگاه را پوشش دهد، گره هایی را به درخت اضافه کند و تغییراتی در ویژگی های درخت موجود ایجاد کند.
به روز رسانی در نسخه اندروید 9
در اندروید 9، بوت لودر نباید ویژگی های تعریف شده در DTO ها را قبل از ارسال DTB یکپارچه به هسته تغییر دهد.
یک DT را بارگیری کنید
بارگذاری یک DT در بوت لودر شامل ساخت، پارتیشن بندی و اجرا می شود.

شکل 1. پیاده سازی معمولی برای بارگذاری درخت دستگاه در بوت لودر.
برای ایجاد و فلش DTB:
1a. از DTC ( dtc
) برای کامپایل DTS ( .dts
) به DTB ( .dtb
) استفاده کنید. DTB به صورت DT مسطح فرمت شده است. 1b. فایل .dtb
را در یک مکان قابل دسترسی بوت لودر در زمان اجرا فلش کنید (جزئیات زیر).
برای پارتیشن بندی، یک مکان قابل دسترسی و قابل اعتماد بوت لودر در حافظه فلش برای قرار دادن .dtb
تعیین کنید. مکان های نمونه:

شکل 2. .dtb را در یک پارتیشن بوت قرار دهید اضافه کردن به image.gz و ارسال به عنوان "هسته" به mkbootimg. | 
شکل 3. .dtb را در یک پارتیشن منحصر به فرد قرار دهید (مثلا پارتیشن dtb). |
برای بارگذاری DTB و راه اندازی هسته:
-
.dtb
از حافظه در حافظه بارگیری کنید. - هسته را با استفاده از آدرس حافظه DT بارگذاری شده شروع کنید.
بعدش چی؟
این صفحه یک گردش کار معمولی بوت لودر برای بارگذاری DT را شرح می دهد و لیستی از اصطلاحات رایج DT را ارائه می دهد. سایر صفحات این بخش نحوه پیاده سازی پشتیبانی بوت لودر ، نحوه کامپایل ، تأیید، و بهینه سازی DTO و نحوه استفاده از چندین DT را شرح می دهند. شما همچنین می توانید جزئیات مربوط به نحو DTO و قالب بندی پارتیشن DTO و DTBO مورد نیاز را دریافت کنید.
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی."],[],[],null,["# Device tree overlays\n\n\u003cbr /\u003e\n\nA *device tree (DT)* is a data structure of named nodes and properties that\ndescribe non-discoverable hardware. Kernels, such as the Linux kernel\nused in Android, use DTs to support a wide range of hardware configurations used\nby Android-powered devices. Hardware vendors supply their own *device tree\nsource (DTS)* files, which are compiled into the *device tree blob (DTB)* file\nusing the *device tree compiler* . These files are then used by the\nbootloader. The DTB file contains a binary-formatted *flattened device tree*.\n\nA [*device tree overlay (DTO)*](https://lkml.org/lkml/2012/11/5/615)\nenables a central DTB to be overlaid on the DT (a *device tree blob\nfor overlay (DTBO)*). A bootloader using DTO can maintain the system-on-chip\n(SoC) DT and dynamically overlay a device-specific DT, adding nodes to the tree\nand making changes to properties in the existing tree.\n\nUpdates in Android 9 release\n----------------------------\n\nIn Android 9, the bootloader must not modify the\nproperties defined in the DTOs before passing the unified DTB to the kernel.\n\nLoad a DT\n---------\n\nLoading a DT in bootloader involves building, partitioning, and running.\n\n**Figure 1.** Typical implementation for loading device tree in bootloader.\n\n1. To create and flash the DTB:\n\n 1a. Use the DTC (`dtc`) to compile DTS (`.dts`) into a DTB (`.dtb`).\n The DTB is formatted as a flattened DT.\n 1b. Flash the `.dtb` file into a bootloader runtime-accessible location\n (detailed below).\n2. To partition, determine a bootloader runtime-accessible and trusted location\n in flash memory to put `.dtb`. Example locations:\n\n \u003cbr /\u003e\n\n |-----------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------|\n | **Figure 2.** Put .dtb in a boot partition by appending to image.gz and passing as \"kernel\" to mkbootimg. | **Figure 3.** Put .dtb in a unique partition (for example, dtb partition). |\n\n \u003cbr /\u003e\n\n3. To load the DTB and start the kernel:\n\n - Load `.dtb` from storage into memory.\n - Start kernel using the memory address of the loaded DT.\n\nWhat's next?\n------------\n\nThis page details a typical bootloader workflow for loading a DT and provides\na list of common DT terms. Other pages in this section describe how to\n[implement bootloader support](/docs/core/architecture/dto/implement), how to\n[compile](/docs/core/architecture/dto/compile), verify, and\n[optimize your DTO](/docs/core/architecture/dto/optimize), and how to\n[use multiple DTs](/docs/core/architecture/dto/multiple). You can\nalso get details on [DTO syntax](/docs/core/architecture/dto/syntax) and\nrequired\n[DTO and DTBO partition formatting](/docs/core/architecture/dto/partitions)."]]