עץ מכשירים (DT) הוא מבנה נתונים של צמתים ותכונות עם שמות שמתארים חומרה שלא ניתן לגלות. ליבות, כמו ליבת Linux שמשמשת ב-Android, משתמשות ב-DT כדי לתמוך במגוון רחב של תצורות חומרה שמשמשות מכשירים מבוססי Android. ספקי חומרה מספקים קובצי מקור של עץ המכשיר (DTS) משלהם, שעוברים קומפילציה לקובץ blob של עץ המכשיר (DTB) באמצעות קומפיילר של עץ המכשיר. הקבצים האלה משמשים את טוען האתחול. קובץ ה-DTB מכיל עץ מכשירים שטוח בפורמט בינארי.
שכבת-על של עץ מכשירים (DTO) מאפשרת להוסיף שכבת-על של DTB מרכזי על ה-DT (בלוב של עץ מכשירים לשכבת-על (DTBO)). טוען אתחול שמשתמש ב-DTO יכול לשמור על ה-DT של המערכת על שבב (SoC) ולהוסיף באופן דינמי שכבת-על של DT ספציפי למכשיר, להוסיף צמתים לעץ ולבצע שינויים במאפיינים בעץ הקיים.
עדכונים בגרסה Android 9
ב-Android 9, אסור לטוען האתחול לשנות את המאפיינים שמוגדרים ב-DTO לפני העברת ה-DTB המאוחד לליבה.
טעינת DT
טעינת DT בתוכנת האתחול כוללת בנייה, חלוקה למחיצות והרצה.
איור 1. הטמעה טיפוסית לטעינת עץ המכשיר בתוכנת האתחול.
כדי ליצור את ה-DTB ולהעביר אותו לזיכרון הפלאש:
1א. משתמשים ב-DTC (
dtc
) כדי לקמפל DTS (.dts
) ל-DTB (.dtb
). ה-DTB מעוצב כ-DT שטוח. 1ב. מבצעים Flash של קובץ.dtb
למיקום שזמין בזמן הריצה של טוען האתחול (מפורט בהמשך).כדי ליצור מחיצה, צריך לקבוע מיקום מהימן בזיכרון פלאש שאפשר לגשת אליו בזמן הריצה של תוכנת האתחול, כדי להציב בו את
.dtb
. מיקומים לדוגמה:איור 2. מכניסים את .dtb למחיצת אתחול על ידי
הוספה ל-image.gz והעברה כ-
kernel ל-mkbootimg.איור 3. ממקמים את הקובץ .dtb במחיצה ייחודית
(לדוגמה, מחיצת dtb).כדי לטעון את ה-DTB ולהפעיל את הליבה:
- טעינה של
.dtb
מהאחסון לזיכרון. - מפעילים את הליבה באמצעות כתובת הזיכרון של ה-DT שנטען.
- טעינה של
מה השלב הבא?
בדף הזה מפורט תהליך עבודה טיפוסי של bootloader לטעינת DT, ומוצגת רשימה של מונחים נפוצים שקשורים ל-DT. בדפים אחרים בקטע הזה מוסבר איך להטמיע תמיכה בטוען האתחול, איך לקמפל, לאמת ולשפר את ה-DTO ואיך להשתמש בכמה DT. אפשר גם לקבל פרטים על תחביר DTO ועל הפורמט הנדרש של מחיצות DTO ו-DTBO.