转自: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 中定义标签... | ...然后使用标签。 |
---|---|
|
|
替换
如果主 DT 中存在引用目标属性,则它会在 DTO 之后被替换;否则,它会被附加。例如:
main.dts | overlay.dts | 合并结果 |
---|---|---|
|
|
|
附加
如果主 DT 中不存在引用目标属性,则它会在 DTO 之后被附加。例如:
main.dts | overlay.dts | 合并结果 |
---|---|---|
|
|
|
子节点
子节点语法示例:
main.dts | overlay.dts | 合并结果 |
---|---|---|
|
|
|