ডিভাইস ট্রি সোর্স (DTS) ফর্ম্যাট হল ডিভাইস ট্রি (DT)-এর টেক্সট ভিত্তিক উপস্থাপনা। ডিভাইস ট্রি কম্পাইলার (DTC) এই ফর্ম্যাটকে বাইনারি DT-তে প্রসেস করে, যা Linux কার্নেলের জন্য উপযুক্ত ফর্ম।
রেফারেন্স ব্যবহার করা
DTC
(ডিভাইস ট্রি কম্পাইলার + ওভারলে প্যাচ) প্রজেক্টটি
dtc-format.txt
ও
manual.txt-এ DTS ফর্ম্যাট বর্ণনা করে।
DTO ফর্ম্যাট ও নিয়ম
dt-object-internal.txt-এ বর্ণনা করা আছে।
এইসব ডকুমেন্টে বর্ণনা করা হয়েছে যে কীভাবে ওভারলে DT-তে node
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 এই সিনট্যাক্টিক সুগার সাপোর্ট না করলে, AOSP-তে dtc
ব্যবহার করুন।
লেবেল ব্যবহার করা
কম্পাইলেশন টাইমে উপস্থিত নেই এমন নোডের জন্য অনির্দিষ্ট রেফারেন্সের অনুমতি দিতে, ওভারলে DT .dts ফাইলে অবশ্যই এর
হেডারে একটি ট্যাগ /plugin/ থাকতে হবে। যেমন:
/dts-v1/; /plugin/;
এখান থেকে আপনি রেফারেন্স ব্যবহার করে ওভারলে করার জন্য নোড টার্গেট করতে পারবেন, যা হল
একটি অ্যাবসোলিউট নোড পাথ যার আগে একটি অ্যামপারস্যান্ড (&) থাকে। উদাহরণস্বরূপ, প্রধান DT-তে 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"; }; }; }; |