Google is committed to advancing racial equity for Black communities. See how.
Halaman ini diterjemahkan oleh Cloud Translation API.
Switch to English

Sintaks DTO

Format Device Tree Source (DTS) adalah representasi tekstual dari pohon perangkat. Device Tree Compiler (DTC) memproses format ini menjadi pohon perangkat biner, yang merupakan bentuk yang diharapkan oleh kernel Linux.

Menggunakan referensi

Proyek DTC (Device Tree compiler + overlay patches) menjelaskan format DTS dalam dtc-format.txt dan manual.txt . Format dan aturan DTO dijelaskan dalam dt-object-internal.txt . Dokumen-dokumen ini menjelaskan cara memperbarui DT utama menggunakan fragment@x node fragment@x dan sintaks __overlay__ dalam DT overlay. Sebagai contoh:

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

Namun, Google sangat menyarankan Anda untuk tidak menggunakan fragment@x dan sintaks __overlay__ , melainkan menggunakan sintaks referensi. Sebagai contoh:

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

Sintaks referensi dikompilasi oleh dtc ke dalam objek yang sama seperti di atas menggunakan sintaks __overlay__ . Sintaks ini tidak memaksa Anda untuk memberi nomor pada fragmen, memungkinkan Anda membaca dan menulis DTS overlay dengan mudah. Jika dtc Anda tidak mendukung gula sintaksis ini, gunakan dtc di AOSP .

Menggunakan label

Untuk mengizinkan referensi yang tidak ditentukan ke node yang tidak ada pada waktu kompilasi, file DT .dts overlay harus memiliki tag /plugin/ di headernya. Sebagai contoh:

/dts-v1/;
/plugin/;

Dari sini, Anda dapat menargetkan node untuk dihamparkan menggunakan referensi, yang merupakan jalur node absolut yang diawali dengan tanda & (&). Misalnya, untuk node@0 di DT utama:

Tentukan label di DT utama ... ... lalu gunakan labelnya.
[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>;
};

Utama

Jika properti target referensi ada di DT utama, properti itu diganti setelah DTO; jika tidak, itu akan ditambahkan. Sebagai contoh:

main.dts overlay.dts Hasil Gabungan
[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";
  };
};

Menambahkan

Jika properti target referensi tidak ada di DT utama, itu ditambahkan setelah DTO. Sebagai contoh:

main.dts overlay.dts Hasil Gabungan
[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";
  };
};
.dll

Node anak

Contoh sintaks node anak:

main.dts overlay.dts Hasil Gabungan
[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";
    };
  };
};
.dll