نحو DTO

فرمت منبع درخت دستگاه (DTS) یک نمایش متنی از درخت دستگاه (DT) است. کامپایلر درختی دستگاه (DTC) این فرمت را به یک DT باینری پردازش می کند، که شکل مورد انتظار هسته لینوکس است.

از مراجع استفاده کنید

پروژه DTC (کامپایلر درخت دستگاه + وصله های همپوشانی) فرمت DTS را در dtc-format.txt و manual.txt توصیف می کند. قالب و قوانین DTO در dt-object-internal.txt توضیح داده شده است. این اسناد نحوه به روز رسانی DT اصلی را با استفاده از node fragment@x و نحو __overlay__ در روکش DT توضیح می دهند. به عنوان مثال:

/ {
  fragment@0 {
    target = <&some_node>;
      __overlay__ {
        some_prop = "okay";
        ...
      };
  };
};

با این حال، گوگل اکیداً توصیه می کند که fragment@x و syntax __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";
    };
  };
};