ডিটিও সিনট্যাক্স

ডিভাইস ট্রি সোর্স (ডিটিএস) ফর্ম্যাট হল একটি ডিভাইস ট্রির একটি পাঠ্য উপস্থাপনা। ডিভাইস ট্রি কম্পাইলার (DTC) এই ফর্ম্যাটটিকে একটি বাইনারি ডিভাইস ট্রিতে প্রসেস করে, যা লিনাক্স কার্নেলের প্রত্যাশিত ফর্ম।

রেফারেন্স ব্যবহার করে

ডিটিসি (ডিভাইস ট্রি কম্পাইলার + ওভারলে প্যাচ) প্রকল্পটি ডিটিএস ফর্ম্যাটকে 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";
    };
  };
};