הטמעה של שכבות-על של עץ המכשיר (DTO) כוללת חלוקה של עץ המכשיר (DT), בנייה, חלוקה למחיצות והפעלה. אחרי שיוצרים הטמעה תקינה, צריך גם לשמור על תאימות בין שני ה-DT ולקבוע אסטרטגיה להבטחת האבטחה של כל מחיצת DT.
חלוקת ה-DT
מתחילים בחלוקת ה-DT לשני חלקים:
- Main DT. החלק שכולל רק את ה-SoC וההגדרות שקובעות כברירת מחדל, שמסופקים על ידי ספק ה-SoC.
- Overlay DT. ההגדרות הספציפיות למכשיר, שסופקו על ידי ODM/OEM.
אחרי שמחלקים את ה-DT, צריך לוודא שיש תאימות בין ה-DT הראשי לבין ה-DT של שכבת העל, כך שמיזוג של ה-DT הראשי עם ה-DT של שכבת העל יניב DT מלא למכשיר. פרטים על הפורמט והכללים של DTO מופיעים במאמר בנושא תחביר DTO. פרטים על שימוש בכמה DTs מופיעים במאמר שימוש בכמה DTs.
יצירת טבלאות ראשיות וטבלאות של שכבות-על
כדי ליצור את טבלת הנתונים הראשית:
- קומפילציה של ה-DT הראשי
.dtsלקובץ.dtb. - מבצעים Flash של קובץ
.dtbלמחיצה שנגישה בזמן הריצה של טוען האתחול (מפורט בקטע [Partition DTs](#partition)).
כדי ליצור את שכבת העל של ה-DT:
- קומפילציה של שכבת-העל של ה-DT
.dtsלקובץ.dtbo. פורמט הקובץ הזה זהה לפורמט של קובץ.dtbשעבר המרה ל-DT שטוח, אבל סיומת הקובץ השונה מבדילה אותו מה-DT הראשי. - מבצעים Flash של קובץ
.dtboלמחיצה שנגישה בזמן הריצה של טוען האתחול (מפורט בקטע [Partition DTs](#partition)).
פרטים על קומפילציה באמצעות DTC ואימות תוצאות DTO במארח זמינים במאמר בנושא קומפילציה ואימות.
חלוקה למחיצות של טבלאות העברת נתונים
קובעים מיקום בטוח בזיכרון flash שאפשר לגשת אליו בזמן הריצה של תוכנת האתחול כדי להציב בו את .dtb ואת .dtbo.
דוגמאות למיקומים של התג הראשי:
- חלק ממחיצת האתחול, מצורף לליבה (
image.gz) - הפרדה של נתוני DT (
.dtb) במחיצה ייעודית (dtb)
דוגמאות למיקומים של שכבת העל DT:

איור 1. מכניסים את הקובץ .dtbo למחיצת odm (רק אם לטוען האתחול יש אפשרות לטעון נתונים ממערכת הקבצים של מחיצת odm).

איור 2. ממקמים את הקובץ .dtbo במחיצה ייחודית, כמו מחיצת dtbo.
הערה: הגודל של מחיצת ה-DT של שכבת העל תלוי במכשיר ובמספר השינויים שצריך לבצע בנוסף ל-blob ה-DT הראשי. בדרך כלל, נפח של 8 MB מספיק בהחלט ומאפשר להגדיל את הנפח בעתיד אם יהיה צורך בכך.
במכשירים שתומכים בעדכונים ללא הפרעה (A/B), צריך לבצע A/B במחיצות של ה-DT הראשי וה-DT של שכבת העל:

איור 3. חלוקת DTBO ל-A/B, דוגמה 1.

איור 4. חלוקת DTBO ל-A/B, דוגמה 2.
הרצה בתוכנת האתחול
כדי להריץ:

איור 5. הטמעה אופיינית של DTO בזמן ריצה בתוכנת האתחול.
- טעינת
.dtbמהאחסון לזיכרון. - טעינת
.dtboמהאחסון לזיכרון. - השכבת
.dtbעל.dtboכדי ליצור DT משולב. - הפעלת ליבת המערכת בהינתן כתובת הזיכרון של ה-DT הממוזג.
שמירה על תאימות
ה-DTB הראשי (מספק SoC) נחשב לממשק API ל-DTBO. אחרי שמפרידים את ה-DT לחלק משותף ל-SoC ולחלק ספציפי למכשיר, צריך לוודא שהתאימות בין שני החלקים תישמר בעתיד, כולל:
- הגדרת ה-DT ב-DT הראשי. לדוגמה, צמתים, מאפיינים, תוויות. כל שינוי בהגדרה ב-DT הראשי יכול להפעיל שינויים ב-DT של שכבת העל. לדוגמה, כדי לתקן שם של צומת ב-DT הראשי, מגדירים תווית alias שממפה לשם הצומת המקורי (כדי למנוע את השינוי של DT השכבה).
- הצגת מיקום חנות DT בשכבת-על. לדוגמה, שם המחיצה, store format.
הבטחת אבטחה
תוכנת האתחול צריכה לוודא ש-DTB או DTBO מאובטחים, לא השתנו ולא נפגמו. אתם יכולים להשתמש בכל פתרון כדי לאבטח את DTB או DTBO, לדוגמה, חתימה של קובץ אימג' לאתחול ב-VBoot 1.0 או כותרת תחתונה של גיבוב ב-AVB (VBoot 2.0).
- אם DTB או DTBO נמצאים במחיצה ייחודית, אפשר להוסיף את המחיצה הזו לשרשרת האמון של AVB. שרשרת האמון מתחילה מ-Root of Trust שמוגן על ידי חומרה וממשיכה אל טוען האתחול, שמאמת את השלמות והאותנטיות של מחיצת DTB או DTBO.
- אם DTB או DTBO נמצאים במחיצה קיימת (כמו
odmpartition), המחיצה הזו צריכה להיות בשרשרת האמון של AVB. (מחיצת DTBO יכולה לשתף מפתח ציבורי עם מחיצתodm).
פרטים נוספים זמינים במאמר בנושא Verified Boot.