Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Sintaxis DTO

El formato Device Tree Source (DTS) es una representación textual de un árbol de dispositivos. El Compilador de árbol de dispositivos (DTC) procesa este formato en un árbol de dispositivos binarios, que es la forma esperada por el kernel de Linux.

Usando referencias

El proyecto DTC (compilador de árbol de dispositivos + parches de superposición) describe el formato DTS en dtc-format.txt y manual.txt . El formato y las reglas de DTO se describen en dt-object-internal.txt . Estos documentos describen cómo actualizar el DT principal utilizando el fragment@x nodo fragment@x sintaxis __overlay__ en el DT de superposición. Por ejemplo:

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

Sin embargo, Google recomienda encarecidamente que no utilice fragment@x sintaxis __overlay__ , sino que utilice la sintaxis de referencia. Por ejemplo:

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

La sintaxis de referencia es compilada por dtc en el mismo objeto que el anterior usando la sintaxis __overlay__ . Esta sintaxis no le obliga a numerar los fragmentos, lo que le permite leer y escribir DTS superpuestos fácilmente. Si su dtc no admite este azúcar sintáctico, use el dtc en AOSP .

Usando etiquetas

Para permitir referencias indefinidas a nodos que no están presentes en el momento de la compilación, el archivo DT .dts superposición debe tener una etiqueta /plugin/ en su encabezado. Por ejemplo:

/dts-v1/;
/plugin/;

Desde aquí, puede apuntar a los nodos que se superpondrán mediante una referencia, que es una ruta de nodo absoluta con el prefijo comercial (&). Por ejemplo, para el node@0 en el DT principal:

Definir etiquetas en el DT principal ... ... luego usa las etiquetas.
[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>;
};

Primordial

Si la propiedad de destino de referencia existe en el DT principal, se anula después de DTO; de lo contrario, se adjunta. Por ejemplo:

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

Anexando

Si la propiedad de destino de referencia no existe en el DT principal, se agrega después del DTO. Por ejemplo:

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

Nodos secundarios

Ejemplos de sintaxis de nodo hijo:

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