שכבות-על של עץ המכשיר

עץ מכשיר (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. הטמעה אופיינית לטעינה של עץ המכשיר בתוכנת האתחול.

  1. כדי ליצור את קובץ ה-DTB ולבצע בו איפוס:

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

  2. כדי ליצור מחיצה, צריך לקבוע מיקום מהימן שזמין למטען האתחול במהלך זמן הריצה בזיכרון הפלאש, כדי להציב בו את .dtb. מיקומים לדוגמה:

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

    איור 3. צריך להעביר את הקובץ dtb .לקטע ייחודיים
    (לדוגמה, dtb partition).

  3. כדי לטעון את ה-DTB ולהפעיל את הליבה:

    • טעינת .dtb מהאחסון לזיכרון.
    • הפעלת הליבה באמצעות כתובת הזיכרון של ה-DT שנטען.

מה השלב הבא?

בדף הזה מפורט תהליך עבודה טיפוסי של מנהל האתחול לטעינת DT, ומוצגת רשימה של מונחים נפוצים של DT. בדפים אחרים בקטע הזה מוסבר איך להטמיע תמיכה ב-bootloader, איך לעבד, לאמת ולבצע אופטימיזציה של ה-DTO ואיך להשתמש בכמה DTs. תוכלו למצוא גם פרטים על תחביר DTO ועל פורמט המחיצות הנדרש של DTO ו-DTBO.