Cihaz ağacı kaynağı (DTS) biçimi, cihaz ağacının (DT) metin biçimindeki gösterimidir. Cihaz ağacı derleyicisi (DTC), bu biçimi Linux çekirdeği tarafından beklenen biçim olan ikili DT'ye dönüştürür.
Referansları kullanma
DTC
(Device Tree Compiler + Overlay Patches) projesi, DTS biçimini
dtc-format.txt
ve
manual.txt dosyalarında açıklar.
DTO biçimi ve kuralları dt-object-internal.txt dosyasında açıklanmıştır.
Bu belgelerde, yer paylaşımı DT'sinde düğüm fragment@x
ve sözdizimi __overlay__
kullanılarak ana DT'nin nasıl güncelleneceği açıklanmaktadır. Örneğin:
/ { fragment@0 { target = <&some_node>; __overlay__ { some_prop = "okay"; ... }; }; };
Ancak Google, fragment@x
ve __overlay__
söz dizimini kullanmamanızı, bunun yerine referans söz dizimini kullanmanızı önemle tavsiye eder. Örneğin:
&some_node { some_prop = "okay"; ... };
Referans söz dizimi, dtc
tarafından __overlay__
söz dizimi kullanılarak yukarıdakiyle aynı nesneye derlenir. Bu söz dizimi, parçaları numaralandırmanızı gerektirmez. Böylece, DTS'yi kolayca okuyup yazabilirsiniz. dtc
bu söz dizimi kolaylığını desteklemiyorsa AOSP'deki dtc
in AOSP'yi kullanın.
Etiketleri kullanma
Derleme sırasında bulunmayan düğümlere belirsiz referanslara izin vermek için, overlay DT .dts
dosyasının başlığında /plugin/
etiketi bulunmalıdır. Örneğin:
/dts-v1/; /plugin/;
Buradan, bir referans kullanarak yerleştirilecek düğümleri hedefleyebilirsiniz. Bu referans, "ve" işareti (&) ile öneklenmiş mutlak bir düğüm yoludur. Örneğin, ana DT'deki node@0
için:
Ana DT'de etiketleri tanımlayın. | ... ardından etiketleri kullanın. |
---|---|
[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>; }; |
Geçersiz kıl
Referans hedef mülk ana DT'de varsa DTO'dan sonra geçersiz kılınır, aksi takdirde eklenir. Örneğin:
main.dts | overlay.dts | Birleştirilmiş sonuç |
---|---|---|
[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"; }; }; |
İliştir
Referans hedef mülk ana DT'de yoksa DTO'dan sonra eklenir. Örneğin:
main.dts | overlay.dts | Birleştirilmiş sonuç |
---|---|---|
[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"; }; }; |
Alt düğümler
Alt düğüm söz dizimi örnekleri:
main.dts | overlay.dts | Birleştirilmiş sonuç |
---|---|---|
[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"; }; }; }; |