פורמט Device Tree Source (DTS) הוא ייצוג טקסטואלי של עץ התקן. מהדר עץ ההתקנים (DTC) מעבד את הפורמט הזה לעץ התקנים בינארי, שהוא הצורה הצפויה על ידי ליבת לינוקס.
שימוש בהפניות
פרויקט DTC (מהדר עץ התקן + תיקוני שכבת על) מתאר את פורמט DTS ב- dtc-format.txt ו- manual.txt . פורמט DTO וכללים מתוארים ב- dt-object-internal.txt . מסמכים אלה מתארים כיצד לעדכן את ה-DT הראשי באמצעות node fragment@x
והתחביר __overlay__
ב-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"; }; }; }; |