設備樹源 (DTS) 格式是設備樹的文本表示。設備樹編譯器 (DTC) 將此格式處理成二進制設備樹,這是 Linux 內核所期望的形式。
使用參考
DTC (設備樹編譯器 + 覆蓋補丁)項目在dtc- format.txt 和manual.txt中描述了 DTS 格式。 DTO 格式和規則在dt-object-internal.txt中描述。這些文檔描述瞭如何使用節點fragment@x
和覆蓋 DT 中的語法__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] | [my_overlay_dt.dts] |
覆蓋
如果引用目標屬性存在於主 DT 中,則在 DTO 之後被覆蓋;否則,它被附加。例如:
主文件 | 覆蓋.dts | 合併結果 |
---|---|---|
[my_main_dt.dts] | [my_overlay_dt.dts] | /dts-v1/; |
追加
如果主 DT 中不存在引用目標屬性,則將其附加在 DTO 之後。例如:
主文件 | 覆蓋.dts | 合併結果 |
---|---|---|
[my_main_dt.dts] | [my_overlay_dt.dts] | /dts-v1/; |
子節點
子節點語法示例:
主文件 | 覆蓋.dts | 合併結果 |
---|---|---|
[my_main_dt.dts] | [my_overlay_dt.dts] | /dts-v1/; |