החל מ-27 במרץ 2025, מומלץ להשתמש ב-android-latest-release
במקום ב-aosp-main
כדי ליצור תרומות ל-AOSP. מידע נוסף זמין במאמר שינויים ב-AOSP.
שכבות-על של פירוט מבנה המכשיר (DT)
קל לארגן דפים בעזרת אוספים
אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.
עץ מכשיר (DT) הוא מבנה נתונים של צמתים ונכסים עם שמות שמתארים חומרה שלא ניתן לגלות. ליבות, כמו ליבה של Linux שמשמשת ב-Android, משתמשות ב-DT כדי לתמוך במגוון רחב של הגדרות חומרה שמשמשות במכשירים מבוססי Android. ספקי החומרה מספקים קבצים משלהם של מקור של עץ המכשיר (DTS), שמתורגמים לקובץ device tree blob (DTB) באמצעות המתרגם של עץ המכשיר. לאחר מכן, הקבצים האלה משמשים את מנהל האתחול. קובץ ה-DTB מכיל עץ מכשיר שטוח בפורמט בינארי.
החפיפה של עץ המכשיר (DTO) מאפשרת להוסיף שכבת-על של DTB מרכזי על DT (blob של עץ המכשיר לחפיפה (DTBO)). אתחול באמצעות DTO יכול לשמור על ה-DT של מערכת-על-שבב (SoC) ולהוסיף באופן דינמי DT ספציפי למכשיר, להוסיף צמתים לעץ ולבצע שינויים במאפיינים בעץ הקיים.
עדכונים במהדורת Android 9
ב-Android 9, לא ניתן לשנות את המאפיינים שהוגדרו ב-DTOs לפני העברת ה-DTB המאוחד לליבת המעבד.
טעינת DT
טעינה של DT ב-bootloader כוללת פיתוח, יצירת מחיצות והפעלה.

איור 1. הטמעה אופיינית לטעינה של עץ המכשיר בתוכנת האתחול.
כדי ליצור את קובץ ה-DTB ולבצע בו הפעלה (flash):
1א. משתמשים ב-DTC (dtc
) כדי לקמפל את ה-DTS (.dts
) ל-DTB (.dtb
). הפורמט של ה-DTB הוא DT שטוח.
1ב. מבצעים הפעלה (flash) של קובץ .dtb
למיקום שזמין לזמן ריצה של bootloader (פרטים בהמשך).
כדי ליצור מחיצה, צריך לקבוע מיקום מהימן שזמין למטען האתחול במהלך זמן הריצה בזיכרון הפלאש, כדי להציב בו את .dtb
. מיקומים לדוגמה:

איור 2. כדי להוסיף את הקובץ dtb . למחיצה של האתחול, מוסיפים אותו לקובץ image.gz ומעבירים אותו כ- "kernel" ל-mkbootimg.
|

איור 3. צריך להעביר את הקובץ dtb .לקטע ייחודיים (לדוגמה, dtb partition).
|
כדי לטעון את ה-DTB ולהפעיל את הליבה:
- טעינת
.dtb
מהאחסון לזיכרון.
- הפעלת הליבה באמצעות כתובת הזיכרון של ה-DT שנטען.
מה השלב הבא?
בדף הזה מפורט תהליך עבודה טיפוסי של מנהל האתחול לטעינת DT, ומוצגת רשימה של מונחים נפוצים של DT. בדפים אחרים בקטע הזה מוסבר איך להטמיע תמיכה ב-bootloader, איך לעבד, לאמת ולבצע אופטימיזציה של ה-DTO ואיך להשתמש בכמה DTs. תוכלו לקבל גם פרטים על תחביר DTO ועל פורמט המחיצות הנדרש של DTO ו-DTBO.
דוגמאות התוכן והקוד שבדף הזה כפופות לרישיונות המפורטים בקטע רישיון לתוכן. Java ו-OpenJDK הם סימנים מסחריים או סימנים מסחריים רשומים של חברת Oracle ו/או של השותפים העצמאיים שלה.
עדכון אחרון: 2025-07-27 (שעון UTC).
[[["התוכן קל להבנה","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-27 (שעון UTC)."],[],[],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)."]]