עץ מכשיר (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 ולבצע בו איפוס:
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.