zoukankan      html  css  js  c++  java
  • DTO 语法【转】

    转自:https://source.android.google.cn/devices/architecture/dto/syntax?hl=zh-cn

    设备树源 (DTS) 格式是设备树的文本表示形式。设备树编译器 (DTC) 可将这种格式处理为二进制设备树,这是 Linux 内核要求的形式。

    使用引用

    DTC(设备树编译器 + 叠加补丁程序)项目在 dtc-format.txt 和 manual.txt 中说明了 DTS 格式。在 dt-object-internal.txt 中说明了 DTO 格式和规则。这些文档说明了如何使用叠加 DT 中的节点 fragment@x 和语法 __overlay__ 来更新主 DT。例如:

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

    不过,Google 强烈建议您不要使用 fragment@x 和语法 __overlay__,而应使用引用语法。例如:

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

    dtc 会将引用语法编译成与使用语法 __overlay__ 所生成的上述对象相同的对象。此语法不强制您对片段进行编号,让您能够轻松地读取和写入叠加 DTS。如果您的 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.dtsoverlay.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.dtsoverlay.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.dtsoverlay.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";
            };
          };
        };
       
  • 相关阅读:
    'live-server' 不是内部或外部命令,也不是可运行的程序 或批处理文件。(解决)
    Node.js安装及环境配置之Windows篇
    开发模式
    IOS13越狱后虚拟定位插件的推荐,relocate
    python,向列表中追加字典,被最后的值覆盖的问题解决办法
    博客园cnblog使用百度统计等站长统计的方法
    IOS解锁哔哩哔哩大会员免费版越狱插件的cydia源
    filza无法安装deb(filza command not found)的解决办法
    Mac 中dock栏图标中文乱码英文正常的解决办法
    关于NVIDIA显卡控制面板中“调整桌面颜色设置”在重启后设置失效的处理方法
  • 原文地址:https://www.cnblogs.com/sky-heaven/p/12841917.html
Copyright © 2011-2022 走看看