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