Cihaz Ağacı Kaynak dosyalarını derlemek için Cihaz Ağacı Derleyicisini (DTC) kullanabilirsiniz. Ancak, hedef ana CE'ye bindirmeli CE'yi uygulamadan önce, DTO davranışını simüle ederek sonucu da doğrulamanız gerekir.
DTC ile derleme
.dts
derlemek için dtc
kullanırken, sonuçtaki .dtbo
bir __symbols__
düğümü eklemek için -@
seçeneğini eklemelisiniz. __symbols__
düğümü, DTO kitaplığının referanslar için kullanabileceği bir etiketle işaretlenmiş tüm düğümlerin bir listesini içerir.
Ana DT .dts
oluşturmak için örnek komut:
dtc -@ -O dtb -o my_main_dt.dtb my_main_dt.dts
DT .dts
bindirmesini oluşturmak için örnek komut:
dtc -@ -O dtb -o my_overlay_dt.dtbo my_overlay_dt.dts
Ana bilgisayarda DTO sonuçlarını doğrulayın
Doğrulama, bindirmeli CE'yi ana CE'ye yerleştirirken oluşabilecek hataları belirlemenize yardımcı olabilir. Hedefi güncellemeden önce, .dts içinde /include/
kullanarak .dts
davranışını simüle ederek ana bilgisayarda DT kaplamanın sonucunu doğrulayabilirsiniz.
/include/
sözdizimini kullanın-
.dts
yer paylaşımının bir kopyasını oluşturun. Kopyada, ilk satır başlığını kaldırın. Örnek:/dts-v1/; /plugin/;
Dosyayımy_overlay_dt_wo_header.dts
(veya istediğiniz herhangi bir dosya adı) olarak kaydedin. - Ana
.dts
bir kopyasını oluşturun. Kopyada, son satırdan sonra 1. adımda oluşturduğunuz dosyanın içerme sözdizimini ekleyin. Örneğin:/include/ "my_overlay_dt_wo_header.dts"
Dosyayımy_main_dt_with_include.dts
(veya istediğiniz herhangi bir dosya adı) olarak kaydedin. - DTO ile aynı sonuç olması gereken birleştirilmiş
my_main_dt_with_include.dts
almak üzeredtc
derlemek için dtc'yi kullanın. Örneğin:dtc -@ -O dtb -o my_merged_dt.dtb my_main_dt_with_include.dts
-
dtc
boşaltmak içinmy_merged_dt.dto
kullanın.dtc -O dts -o my_merged_dt.dts my_merged_dt.dtb
Android 9'da DTO'yu doğrulama
Android 9, bir Cihaz Ağacı Blob Yerleşimi (DTBO) bölümü gerektirir. SoC DT'de düğümler eklemek veya özelliklerde değişiklik yapmak için, önyükleyicinin SoC DT'nin üzerine aygıta özel bir DT'yi dinamik olarak bindirmesi gerekir.
Uygulanan bindirmeleri gösteren
Vendor Test Suite'in (VTS) bindirme uygulamasının doğruluğunu değerlendirmesini sağlamak için, satıcıların DTBO bölümünden seçilen bindirmeleri belirten yeni bir çekirdek komut satırı parametresi androidboot.dtbo_idx
eklemesi gerekir. Çekirdek sürüm 5.10 veya daha üstünü kullanan Android 12'de bu parametre, bootconfig'den geçer. Örneğin, androidboot.dtbo_idx=x,y,z
z
x
, y
ve z'yi, önyükleyici tarafından tabana uygulanan (bu sırayla) DTBO bölümünden Aygıt Ağacı Kaplamalarının (DTO'lar) sıfır tabanlı dizinleri olarak bildirir. Cihaz Ağacı (DT).
Kaplamalar, ana cihaz ağacındaki düğümlere uygulanabilir veya yeni düğümler ekleyebilir, ancak önceki bir kaplamaya eklenen bir düğüme atıfta bulunamaz . Bu kısıtlama, kaplama uygulaması kaplama simge tablosunu ana DT simge tablosuyla birleştirmediğinden gereklidir (birleştirme yapmamak, simge adlarındaki çakışmaları ve kaplamalar arasındaki bağımlılıkların karmaşıklığını önler).
Örnek: Geçersiz bindirmeler
Bu örnekte overlay_2.dts, overlay_2.dts
tarafından eklenen e
düğümüne atıfta overlay_1.dts
. Ana overlay_1
uygulandıktan sonra, ortaya çıkan overlay_2
bindirme_2 uygulanmaya çalışılırsa, bindirme uygulaması, temel CE için sembol tablosunda e
sembolünün bulunmadığı hatasıyla başarısız olur.
main.dts | overlay_1.dts | overlay_2.dts |
---|---|---|
[main.dts] /dts-v1/; / { a: a {}; b: b {}; c: c {}; }; | [overlay_1.dts] /dts-v1/; /plugin/; &b { ref1 = <&a>; e: e { prop = <0x0a>; phandle = <0x04>; }; }; | [overlay_2.dts] /dts-v1/; /plugin/; /* invalid! */ &e { prop = <0x0b>; }; |
Örnek: Geçerli kaplamalar
Bu örnekte overlay_2.dts
, yalnızca ana DTS'den b
düğümüne atıfta bulunur. overlay_1
, temel DT'ye uygulandığında, ardından overlay_2
uygulaması geldiğinde, e
düğümündeki prop
özelliğinin değerinin (overlay_1.dts tarafından ayarlanan) overlay_1.dts
tarafından ayarlanan değerin üzerine overlay_2.dts
.
main.dts | overlay_1.dts | overlay_2.dts |
---|---|---|
[final.dts] /dts-v1/; / { a: a {}; b: b {}; c: c {}; }; | [overlay_1.dts] /dts-v1/; /plugin/; &b { ref1 = <&a>; e { prop = <0x0c>; }; }; | [overlay_2.dts] /dts-v1/; /plugin/; /* valid */ &b { ref1 = <&c>; e { prop = <0x0d>; }; }; |
DTBO bölümünün uygulanması
Gerekli DTBO bölümünü uygulamak için önyükleyicinin aşağıdakileri yapabildiğinden emin olun:
- Üzerinde çalıştığı kartı tanımlayın ve uygulanacak ilgili kaplamayı/yer paylaşımları seçin.
-
androidboot.dtbo_idx
parametresini çekirdek komut satırına ekleyin.- Parametre, temel DT'ye uyguladığı DTBO bölümü görüntüsünden DTO'ların sıfır tabanlı endekslerini göstermelidir (aynı sırada).
- Endeksler, DTBO bölümündeki bindirmenin konumuna başvurmalıdır.
DTBO bölümünün yapısıyla ilgili ayrıntılar için source.android.com adresindeki Cihaz Ağacı Kaplamalarına bakın.
DTBO bölümünün doğrulanması
Aşağıdakileri doğrulamak için VTS'yi kullanabilirsiniz:
- Androidboot.dtbo_idx çekirdek komut satırı parametresinin varlığı (
androidboot.dtbo_idx
ilgiliInit
sistem özelliğini otomatik olarak kurduğunu kontrolro.boot.dtbo_idx
). -
ro.boot.dtbo_idx
sistem özelliğinin geçerliliği (özelliğin en az bir geçerli DTBO görüntü indeksi belirttiğini kontrol ederek). - DTBO bölümünün geçerliliği (aynı zamanda temel DT'ye uygulanan DTBO bölümündeki bindirmeleri de doğrular).
- Ortaya çıkan DT'deki ek düğümler veya özellik değişiklikleri Linux çekirdeğine sunulur.
Örneğin, aşağıdaki bindirmelerde ve son DT'de, çekirdek komut satırına androidboot.dtbo_idx=5,3
eklenmesi doğrulamayı geçer, ancak çekirdek komut satırına androidboot.dtbo_idx=3,5
eklenmesi doğrulamayı geçmez.
DT'yi dizin 3'e yerleştirin | DT'yi indeks 5'e yerleştir |
---|---|
[overlay_1.dts] /dts-v1/; /plugin/; &c { prop = <0xfe>; }; | [overlay_2.dts] /dts-v1/; /plugin/; &c { prop = <0xff>; }; |
son DT |
---|
/dts-v1/; / { a { phandle = <0x1>; }; b { phandle = <0x2>; }; c { phandle = <0x3>; prop = <0xfe>; }; __symbols__ { a = "/a"; b = "/b"; c = "/c"; }; }; |
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2022-09-07 UTC.