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