DTO söz dizimi

Cihaz ağacı kaynağı (DTS) biçimi, cihaz ağacının (DT) metin biçiminde temsilidir. Cihaz ağacı derleyicisi (DTC), bu biçimi ikili bir DT olarak işler, Bu, Linux çekirdeği tarafından beklenen biçimdir.

Referansları kullan

DTC (device Tree derleyici + yer paylaşımlı yamalar) projesi, DTS biçimini dtc-format.txt ve manual.txt. Uyuşturucu ticareti örgütlerinin biçimi ve kuralları şurada açıklanmıştır: dt-object-internal.txt Bu dokümanlarda, düğüm kullanılarak ana DT'nin nasıl güncelleneceği açıklanmaktadır Yer paylaşımı DT'sinde fragment@x ve söz dizimi __overlay__. Örneğin, örnek:

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

Ancak Google, GCLID'yi kullanmamanızı fragment@x ve __overlay__ söz dizimini kullanın ve onun yerine referans söz dizimi. Örnek:

&some_node {
  some_prop = "okay";
  ...
};

Referans söz dizimi, dtc tarafından şununla aynı nesnede derlenir: yukarıdaki adımları uygulayın: __overlay__. Bu söz dizimi, Böylece bindirme DTS'lerini kolayca okuyup yazabilirsiniz. Eğer dtc bu sentetik şekeri desteklemiyor. dtc AOSP'de.

Etiketleri kullan

Derleme zamanında mevcut olmayan düğümlere tanımlanmamış referanslara izin vermek için yer paylaşımlı DT .dts dosyasının içinde /plugin/ etiketi olmalıdır kullanabilirsiniz. Örnek:

/dts-v1/;
/plugin/;

Buradan, bir referans kullanılarak yer paylaşımlı olacak düğümleri hedefleyebilirsiniz. Bu referans önünde "ve" işareti (&) bulunan bir mutlak düğüm yolu. Örneğin, Ana DT'de node@0:

Ana DT'de etiketleri tanımlayın ... ... ardından etiketleri kullanın.
[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>;
};

Geçersiz kıl

Referans hedef mülkü ana DT'de varsa geçersiz kılınır uyuşturucu ticareti örgütlerinden sonra; aksi takdirde eklenir. Örnek:

ana.dts yer paylaşımlı.dts Birleştirilmiş Sonuç
[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";
  };
};

İliştir

Referans hedef mülkü ana DT'de yoksa DTO'dan sonra eklenir. Örnek:

ana.dts yer paylaşımlı.dts Birleştirilmiş Sonuç
[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";
  };
};

Alt düğümler

Alt düğüm söz dizimi örnekleri:

ana.dts yer paylaşımlı.dts Birleştirilmiş Sonuç
[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";
    };
  };
};