Cihaz ağacı kaynağı (DTS) biçimi, cihaz ağacının (DT) metinsel bir temsilidir. 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 (cihaz ağacı derleyicisi + yer paylaşımı yamaları) projesinde, DTS biçimi dtc-format.txt ve manual.txt dosyalarında açıklanmaktadır.
DTO biçimi ve kuralları dt-object-internal.txt dosyasında açıklanmaktadır.
Bu dokümanlarda, yer paylaşımı DT'sinde fragment@x
düğümü ve __overlay__
söz dizimi 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. Örnek:
&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ıza gerek bırakmaz. Böylece, yer paylaşımlı DTS'leri kolayca okuyabilir ve yazabilirsiniz. dtc
'ünüz bu söz dizimi kısaltmasını desteklemiyorsa AOSP'deki dtc'yi kullanın.
Etiketleri kullanma
Derleme sırasında mevcut olmayan düğümlere yönelik tanımlanmamış referanslara izin vermek için yer paylaşımı DT .dts
dosyasının başlığında bir /plugin/
etiketi bulunmalıdır. Örnek:
/dts-v1/; /plugin/;
Buradan, "ve" işareti (&) ile başlayan mutlak bir düğüm yolu olan bir referans kullanarak yer paylaşımı yapılacak düğümleri hedefleyebilirsiniz. Örneğin, ana DT'deki node@0
için:
Ana DT'de etiketleri tanımlama ... | ... 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 mevcutsa DTO'dan sonra geçersiz kılınır. Aksi takdirde eklenir. Örnek:
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 mevcut değilse DTO'dan sonra eklenir. Örnek:
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"; }; }; }; |