27 মার্চ, 2025 থেকে, আমরা AOSP তৈরি করতে এবং অবদান রাখতে aosp-main
এর পরিবর্তে android-latest-release
ব্যবহার করার পরামর্শ দিচ্ছি। আরও তথ্যের জন্য, AOSP-তে পরিবর্তনগুলি দেখুন।
ডিটিও সিনট্যাক্স
সেভ করা পৃষ্ঠা গুছিয়ে রাখতে 'সংগ্রহ' ব্যবহার করুন
আপনার পছন্দ অনুযায়ী কন্টেন্ট সেভ করুন ও সঠিক বিভাগে রাখুন।
ডিভাইস ট্রি সোর্স (ডিটিএস) ফর্ম্যাট হল একটি ডিভাইস ট্রি (ডিটি) এর পাঠ্য উপস্থাপনা। ডিভাইস ট্রি কম্পাইলার (DTC) এই ফরম্যাটটিকে একটি বাইনারি DT-তে প্রসেস করে, যা লিনাক্স কার্নেলের প্রত্যাশিত ফর্ম।
রেফারেন্স ব্যবহার করুন
ডিটিসি (ডিভাইস ট্রি কম্পাইলার + ওভারলে প্যাচ) প্রকল্পটি ডিটিএস ফরম্যাটকে dtc-format.txt এবং manual.txt- এ বর্ণনা করে। DTO ফরম্যাট এবং নিয়মগুলি dt-object-internal.txt- এ বর্ণনা করা হয়েছে। এই নথিগুলি বর্ণনা করে যে কীভাবে নোড fragment@x
এবং ওভারলে ডিটিতে সিনট্যাক্স __overlay__
ব্যবহার করে প্রধান ডিটি আপডেট করা যায়। যেমন:
/ {
fragment@0 {
target = <&some_node>;
__overlay__ {
some_prop = "okay";
...
};
};
};
যাইহোক, Google দৃঢ়ভাবে সুপারিশ করে যে আপনি fragment@x
এবং সিনট্যাক্স __overlay__
ব্যবহার করবেন না এবং এর পরিবর্তে রেফারেন্স সিনট্যাক্স ব্যবহার করুন। যেমন:
&some_node {
some_prop = "okay";
...
};
রেফারেন্স সিনট্যাক্স dtc
দ্বারা সিনট্যাক্স __overlay__
ব্যবহার করে উপরের মত একই বস্তুতে সংকলিত হয়। এই সিনট্যাক্স আপনাকে খণ্ড সংখ্যার জন্য বাধ্য করে না, আপনাকে ওভারলে ডিটিএস সহজেই পড়তে এবং লিখতে সক্ষম করে। যদি আপনার 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";
};
};
}; |
এই পৃষ্ঠার কন্টেন্ট ও কোডের নমুনাগুলি Content License-এ বর্ণিত লাইসেন্সের অধীনস্থ। Java এবং OpenJDK হল Oracle এবং/অথবা তার অ্যাফিলিয়েট সংস্থার রেজিস্টার্ড ট্রেডমার্ক।
2025-08-21 UTC-তে শেষবার আপডেট করা হয়েছে।
[[["সহজে বোঝা যায়","easyToUnderstand","thumb-up"],["আমার সমস্যার সমাধান হয়েছে","solvedMyProblem","thumb-up"],["অন্যান্য","otherUp","thumb-up"]],[["এতে আমার প্রয়োজনীয় তথ্য নেই","missingTheInformationINeed","thumb-down"],["খুব জটিল / অনেক ধাপ","tooComplicatedTooManySteps","thumb-down"],["পুরনো","outOfDate","thumb-down"],["অনুবাদ সংক্রান্ত সমস্যা","translationIssue","thumb-down"],["নমুনা / কোড সংক্রান্ত সমস্যা","samplesCodeIssue","thumb-down"],["অন্যান্য","otherDown","thumb-down"]],["2025-08-21 UTC-তে শেষবার আপডেট করা হয়েছে।"],[],[],null,["# DTO syntax\n\nDevice tree source (DTS) format is a textual representation of a device tree (DT).\nThe device tree compiler (DTC) processes this format into a binary DT,\nwhich is the form expected by the Linux kernel.\n\nUse references\n--------------\n\nThe [DTC](https://github.com/pantoniou/dtc)\n(device Tree compiler + overlay patches) project describes the DTS format in\n[dtc-format.txt](https://android.googlesource.com/platform/external/dtc/+/refs/heads/android16-release/Documentation/dts-format.txt)\nand\n[manual.txt](https://android.googlesource.com/platform/external/dtc/+/refs/heads/android16-release/Documentation/manual.txt).\nDTO format and rules are described in\n[dt-object-internal.txt](https://android.googlesource.com/platform/external/dtc/+/refs/heads/android16-release/Documentation/dt-object-internal.txt).\nThese documents describe how to update the main DT using node\n`fragment@x` and syntax `__overlay__` in overlay DT. For\nexample: \n\n```objective-c\n/ {\n fragment@0 {\n target = \u003c&some_node\u003e;\n __overlay__ {\n some_prop = \"okay\";\n ...\n };\n };\n};\n```\n\nHowever, Google strongly recommends you do **not** use\n`fragment@x` and syntax `__overlay__`, and instead use the\nreference syntax. For example: \n\n```scdoc\n&some_node {\n some_prop = \"okay\";\n ...\n};\n```\n\nReference syntax is compiled by `dtc` into the same object as the\nabove using syntax `__overlay__`. This syntax doesn't force you to\nnumber the fragments, enabling you to read and write overlay DTS easily. If your\n`dtc` doesn't support this syntactic sugar, use the\n[dtc\nin AOSP](https://android.googlesource.com/platform/external/dtc).\n\nUse labels\n----------\n\nTo allow undefined references to nodes not present at compilation time, the\noverlay DT `.dts` file must have a tag `/plugin/` in its\nheader. For example: \n\n```text\n/dts-v1/;\n/plugin/;\n```\n\nFrom here you can target the nodes to be overlaid using a reference, which is\nan absolute node path prefixed with an ampersand (\\&). For example, for\n`node@0` in the main DT:\n\n| Define labels in the main DT ... | ... then use the labels. |\n|-------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------|\n| ```ini [my_main_dt.dts] /dts-v1/; / { my_node: node@0 { status = \"disabled\"; my_child: child@0 { value = \u003c0xffffffff\u003e; }; }; }; ``` | ```ini [my_overlay_dt.dts] /dts-v1/; /plugin/; &my_node { status = \"okay\"; }; &my_child { value = \u003c0x1\u003e; }; ``` |\n\nOverride\n--------\n\nIf the reference target property exists in the main DT, it is overridden\nafter DTO; otherwise, it is appended. For example:\n\n| main.dts | overlay.dts | Merged Result |\n|-----------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------|\n| ```ini [my_main_dt.dts] /dts-v1/; / { compatible = \"corp,foo\"; my_node: node@0 { status = \"disabled\"; }; }; ``` | ```ini [my_overlay_dt.dts] /dts-v1/; /plugin/; &my_node { status = \"okay\"; }; ``` | ```objective-c /dts-v1/; / { compatible = \"corp,foo\"; ... node@0 { linux,phandle = \u003c0x1\u003e; phandle = \u003c0x1\u003e; status = \"okay\"; }; }; ``` |\n\nAppend\n------\n\nIf the reference target property doesn't exist in the main DT, it is\nappended after DTO. For example:\n\n| main.dts | overlay.dts | Merged Result |\n|-------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------|\n| ```ini [my_main_dt.dts] /dts-v1/; / { compatible = \"corp,foo\"; my_node: node@0 { status = \"okay\"; }; }; ``` | ```ini [my_overlay_dt.dts] /dts-v1/; /plugin/; &my_node { new_prop = \"bar\"; }; ``` | ```objective-c /dts-v1/; / { compatible = \"corp,foo\"; ... node@0 { linux,phandle = \u003c0x1\u003e; phandle = \u003c0x1\u003e; status = \"okay\"; new_prop = \"bar\"; }; }; ``` |\n\nChild nodes\n-----------\n\nExamples of child node syntax:\n\n| main.dts | overlay.dts | Merged Result |\n|------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| ```ini [my_main_dt.dts] /dts-v1/; / { compatible = \"corp,foo\"; my_nodes: nodes { compatible = \"corp,bar\"; node@0 { status = \"disabled\"; }; }; }; ``` | ```ini [my_overlay_dt.dts] /dts-v1/; /plugin/; &my_nodes { new_prop1 = \"abc\"; node@0 { status = \"okay\"; new_prop2 = \"xyz\"; }; }; ``` | ```objective-c /dts-v1/; / { compatible = \"corp,foo\"; ... nodes { linux,phandle = \u003c0x1\u003e; phandle = \u003c0x1\u003e; compatible = \"corp,bar\"; new_prop1 = \"abc\"; node@0 { linux,phandle = \u003c0x2\u003e; phandle = \u003c0x2\u003e; status = \"okay\"; new_prop2 = \"xyz\"; }; }; }; ``` |"]]