تنسيق مصدر شجرة الأجهزة (DTS) هو تمثيل نصي لشجرة الأجهزة (DT). ويعالج برنامج التحويل البرمجي لشجرة الجهاز (DTC) هذا التنسيق إلى تنسيق DT ثنائي، وهو النموذج الذي تتوقعه نواة Linux.
استخدام المراجع
DTC
(برنامج تجميع شجرة الجهاز + تصحيحات التراكب) يصف مشروع DTS تنسيق 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 وإلا فسيتم إلحاقه. مثلاً:
رئيسي.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"; }; }; |
إلحاق
في حال عدم توفُّر خاصية الهدف المرجعي في قسم البيانات الرئيسي ملحق بعد DTO. مثلاً:
رئيسي.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"; }; }; |
العُقد الثانوية
أمثلة على بنية العُقد الفرعية:
رئيسي.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"; }; }; }; |