Cihaz ağacı kaynağını (DTS) derlemek için cihaz ağacı derleyiciyi (DTC) kullanabilirsiniz dosyası olarak da kaydedebilir. Ancak, bindirme cihaz ağacını (DT) hedef ana DT'ye uygulamadan önce, cihaz ağacı yer paylaşımının (DTO) davranışını simüle ederek sonucu doğrulamalıdır.
DTC ile derle
.dts
derlemek için dtc
kullanırken
-@
adlı isteğe bir __symbols__
düğüm eklemek için
sonuçta .dtbo
. __symbols__
düğümü,
DTO kitaplığının kullanabileceği bir etiketle işaretlenmiş tüm düğümlerin listesi
gözden geçirin.
Ana DT .dts
derlemesi için örnek komut:
dtc -@ -O dtb -o my_main_dt.dtb my_main_dt.dts
Bindirme DT'sini oluşturmak için örnek komut .dts
:
dtc -@ -O dtb -o my_overlay_dt.dtbo my_overlay_dt.dts.
DTO sonuçlarını ana makinede doğrula
Doğrulama, kodu yerleştirirken oluşabilecek hataları belirlemenize yardımcı olabilir
ana DT'deki bindirme DT'sini gösterir. Hedefi güncellemeden önce
Bu işlem, uyuşturucu ticareti örgütlerinin davranışını simüle ederek ana makineye DT'nin yerleştirilmesi sonucunda
.dts
içinde /include/
.
Şekil 1. Ana makinede DTO'yu simüle etmek için /include/ söz dizimini kullanın.
.dts
yer paylaşımının bir kopyasını oluşturun. Kopyada ilk satır üstbilgisi. Örnek:/dts-v1/; /plugin/;
Dosyayımy_overlay_dt_wo_header.dts
(veya herhangi bir istediğiniz bir dosya adı) tıklayın.- Ana
.dts
öğesinin bir kopyasını oluşturun. Kopyada, son satırda, 1. adımda oluşturduğunuz dosyaya dahil et söz dizimini ekleyin. Örnek:/include/ "my_overlay_dt_wo_header.dts"
Dosyayımy_main_dt_with_include.dts
(veya herhangi bir istediğiniz bir dosya adı) tıklayın. - Derlemek için
dtc
komutunu kullanın Birleştirilmiş DT'yi almak içinmy_main_dt_with_include.dts
ile aynı sonucu verir. Örnek:dtc -@ -O dtb -o my_merged_dt.dtb my_main_dt_with_include.dts
. my_merged_dt.dto
verilerini dökümü içindtc
işlevini kullanın.dtc -O dts -o my_merged_dt.dts my_merged_dt.dtb
Android 9'da uyuşturucu ticareti örgütlerini doğrulama
Android 9 için cihaz ağacı blob'u yer paylaşımı gerekir (DTBO) bölümü SoC'de düğüm eklemek veya özelliklerde değişiklik yapmak için DT, bootloader'ın cihaza özel bir DT'yi dinamik olarak SoC DT.
Uygulanan yer paylaşımlarını belirtme
Yer paylaşımının doğruluğunu değerlendirmek için Tedarikçi Test Paketi (VTS)
uygulamasının tedarikçilerinin yeni bir çekirdek komut satırı parametresi eklemesi
Şu konumlardan seçilen yer paylaşımlarını gösteren androidboot.dtbo_idx
:
çok kolaylaşır. Android 12'de çekirdek sürümü kullanan
5.10 veya sonraki sürümlerde bu parametre bootconfig'den geçer.
Örneğin, androidboot.dtbo_idx=x,y,z
parametresi,
x
, y
ve z
,
uygulanan DTBO bölümündeki DTO'lar (bu sırayla)
bunu temel DT'ye bağlayabilirsiniz.
Bindirmeler ana DT'deki düğümlere uygulanabilir veya yeni düğümler ekleyebilir. ancak önceki bir yer paylaşımına eklenen bir düğüme başvuruda bulunamaz. Bu kısıtlaması gerekir, çünkü bindirme uygulaması ana DT simge tablosuyla bindirme simge tablosu (birleştirme değil, Sembol adlarındaki çatışmalar ve bağımlılıkların yer paylaşımları).
Örnek: Geçersiz yer paylaşımları
Bu örnekte, overlay_2.dts
,
Şu kullanıcı tarafından eklenen e
:
overlay_1.dts
. overlay_1
,
overlay_2
ürününün
DT'yi gösterir. Bindirme uygulaması, simgenin
Şu öğenin simge tablosunda e
yok:
temel DT.
ana.dts | yer paylaşımlı_1.dts | yer paylaşımlı_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 yer paylaşımları
Bu örnekte, overlay_2.dts
yalnızca bir
Ana DTS'den b
. Zaman
overlay_1
, temel DT'ye uygulanır, ardından da
overlay_2
uygulaması, özelliğin değeri
e
düğümünde prop
(overlay_1.dts
tarafından ayarlandı) değeri,
overlay_2.dts
.
ana.dts | yer paylaşımlı_1.dts | yer paylaşımlı_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ü uygulama
Gerekli DTBO bölümünü uygulamak için bootloader'ın şu işlemleri yapabildiğinden emin olun: takip etmek için:
- Üzerinde çalıştığı panoyu belirleyin ve buna ilişkin yer paylaşımlı olarak ekleyebilirsiniz.
androidboot.dtbo_idx
parametresini çekirdeğe ekleyin komut satırından erişebilirsiniz.- Parametre, uyuşturucu ticareti örgütlerinin sıfır tabanlı indekslerini belirtmelidir temel DT'ye uyguladığı DTBO bölümü resminden (aynı sipariş).
- Dizinler, yer paylaşımının DTBO'daki konumunu belirtmelidir. bölüm.
DTBO bölümünün yapısıyla ilgili ayrıntılar için Cihaz ağacı yer paylaşımları başlıklı makaleyi inceleyin.
DTBO bölümünü doğrulama
VTS'yi kullanarak aşağıdakileri doğrulayabilirsiniz:
- Çekirdek komut satırı parametresinin varlığı
androidboot.dtbo_idx
(Init
ilgiliro.boot.dtbo_idx
sistemini otomatik olarak kur mülkündeki her bir satış için geçerlidir. ro.boot.dtbo_idx
sistem özelliğinin geçerliliği ( mülkün en az bir geçerli DTBO resmi belirttiğinden emin olunması dizin).- DTBO bölümünün geçerliliği (DTBO'daki yer paylaşımlarını da doğrular) bölümlendirmesi (ör. bölümlendirme) içerir.
- Sonuçta ortaya çıkan DT'deki ek düğüm veya özellik değişiklikleri sunulur nasıl aktaracağımızı göreceğiz.
Örneğin, aşağıdaki yer paylaşımları ve son DT'de,
Çekirdek komut satırından androidboot.dtbo_idx=5,3
geçti
doğrulama ancak çekirdeğe androidboot.dtbo_idx=3,5
ekleniyor
komut satırı doğrulamayı geçemiyor.
Dizin 3'te bindirme DT'si | 5. dizinde bindirme DT'si |
---|---|
[overlay_1.dts] /dts-v1/; /plugin/; &c { prop = <0xfe>; }; |
[overlay_2.dts] /dts-v1/; /plugin/; &c { prop = <0xff>; }; |
Maç sonucu DT |
---|
/dts-v1/; / { { phandle = <0x1>; }; b { phandle = <0x2>; }; c { phandle = <0x3>; prop = <0xfe>; }; __simgeler__ { a = "/a"; b = "/b"; c = "/c"; }; }; |