פורמט המקור של פירוט מבנה המכשיר (DTS) הוא ייצוג טקסטואלי של פירוט מבנה המכשיר (DT). המהדר של עץ המכשיר (DTC) מעבד את הפורמט הזה ל-DT בינארי, שהוא הפורמט הצפוי בליבה של Linux.
שימוש בהפניות
בפרויקט DTC (Device Tree compiler + overlay patches) מתוארים הפורמטים של 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 הראשי:
מגדירים תוויות ב-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"; }; }; }; |