פורמט המקור של פירוט מבנה המכשיר (DTS) הוא ייצוג טקסטואלי של פירוט מבנה המכשיר (DT). הקומפיילר של עץ המכשירים (DTC) מעבד את הפורמט הזה ל-DT בינארי, שזה הפורמט שצפוי מליבת לינוקס.
שימוש בהפניות
בפרויקט DTC (מהדר של עץ מכשירים + תיקוני שכבת-על) מתואר פורמט ה-DTS בקובץ dtc-format.txt ובקובץ manual.txt.
הפורמט והכללים של DTO מתוארים בקובץ dt-object-internal.txt.
במסמכים האלה מתואר איך לעדכן את ה-DT הראשי באמצעות הצומת fragment@x
והתחביר __overlay__
ב-DT של שכבת העל. לדוגמה:
/ { fragment@0 { target = <&some_node>; __overlay__ { some_prop = "okay"; ... }; }; };
עם זאת, Google ממליצה לא להשתמש ב-fragment@x
ובתחביר __overlay__
, אלא להשתמש בתחביר של הפניה. לדוגמה:
&some_node { some_prop = "okay"; ... };
תחביר ההפניה עובר קומפילציה על ידי dtc
לאותו אובייקט כמו בדוגמה שלמעלה, באמצעות התחביר __overlay__
. התחביר הזה לא מחייב אתכם למספר את החלקים, כך שתוכלו לקרוא ולכתוב בקלות שכבת-על של DTS. אם dtc
לא תומך בקיצור התחביר הזה, אפשר להשתמש ב-dtc ב-AOSP.
שימוש בתוויות
כדי לאפשר הפניות לא מוגדרות לצמתים שלא קיימים בזמן ההידור, בקובץ ה-DT של שכבת העל .dts
צריך להיות תג /plugin/
בכותרת. לדוגמה:
/dts-v1/; /plugin/;
מכאן אפשר לטרגט את הצמתים שיוצגו בשכבת-על באמצעות הפניה, שהיא נתיב צומת מוחלט עם סימן אמפרסנד (&) בתחילתו. לדוגמה, עבור node@0
בעץ הנתונים הראשי:
מגדירים תוויות ב-DT הראשי ... | ... ואז משתמשים בתוויות. |
---|---|
[my_main_dt.dts] /dts-v1/; / { my_node: node@0 { status = "disabled"; my_child: child@0 { value = <0xffffffff>; }; }; }; |
[my_overlay_dt.dts] /dts-v1/; /plugin/; &my_node { status = "okay"; }; &my_child { value = <0x1>; }; |
שינוי מברירת המחדל
אם מאפיין היעד של קובץ העזר קיים ב-DT הראשי, הוא מוחלף אחרי DTO. אחרת, הוא מצורף. לדוגמה:
main.dts | overlay.dts | תוצאה ממוזגת |
---|---|---|
[my_main_dt.dts] /dts-v1/; / { compatible = "corp,foo"; my_node: node@0 { status = "disabled"; }; }; |
[my_overlay_dt.dts] /dts-v1/; /plugin/; &my_node { status = "okay"; }; |
/dts-v1/; / { compatible = "corp,foo"; ... node@0 { linux,phandle = <0x1>; phandle = <0x1>; status = "okay"; }; }; |
צרף
אם מאפיין היעד של ההפניה לא קיים ב-DT הראשי, הוא מצורף אחרי DTO. לדוגמה:
main.dts | overlay.dts | תוצאה ממוזגת |
---|---|---|
[my_main_dt.dts] /dts-v1/; / { compatible = "corp,foo"; my_node: node@0 { status = "okay"; }; }; |
[my_overlay_dt.dts] /dts-v1/; /plugin/; &my_node { new_prop = "bar"; }; |
/dts-v1/; / { compatible = "corp,foo"; ... node@0 { linux,phandle = <0x1>; phandle = <0x1>; status = "okay"; new_prop = "bar"; }; }; |
צמתים משניים
דוגמאות לתחביר של צומת צאצא:
main.dts | overlay.dts | תוצאה ממוזגת |
---|---|---|
[my_main_dt.dts] /dts-v1/; / { compatible = "corp,foo"; my_nodes: nodes { compatible = "corp,bar"; node@0 { status = "disabled"; }; }; }; |
[my_overlay_dt.dts] /dts-v1/; /plugin/; &my_nodes { new_prop1 = "abc"; node@0 { status = "okay"; new_prop2 = "xyz"; }; }; |
/dts-v1/; / { compatible = "corp,foo"; ... nodes { linux,phandle = <0x1>; phandle = <0x1>; compatible = "corp,bar"; new_prop1 = "abc"; node@0 { linux,phandle = <0x2>; phandle = <0x2>; status = "okay"; new_prop2 = "xyz"; }; }; }; |