Cihaz ağacı yer paylaşımlarını (DTO'lar) uygulamak, cihaz ağacını (DT) bölmeyi, oluşturmayı, bölümlemeyi ve çalıştırmayı içerir. Çalışan bir uygulama oluşturduktan sonra, iki DT arasında uyumluluğu korumanız ve her DT bölümünün güvenliğini sağlamaya yönelik bir strateji belirlemeniz de gerekir.
DT'yi bölme
DT'yi iki bölüme ayırarak başlayın:
- Ana DT. SoC satıcısı tarafından sağlanan yalnızca SoC bölümü ve varsayılan yapılandırmalar.
- Yer paylaşımlı DT. ODM/OEM tarafından sağlanan cihaza özel yapılandırmalar.
DT'leri böldükten sonra, ana DT ile yer paylaşımı DT'si arasında uyumluluk sağlamanız gerekir. Böylece, ana DT ile yer paylaşımı DT'sinin birleştirilmesi cihaz için eksiksiz bir DT oluşturur. DTO biçimi ve kuralları hakkında ayrıntılı bilgi için DTO söz dizimi bölümüne bakın. Birden fazla DT hakkında ayrıntılı bilgi için Birden fazla DT kullanma başlıklı makaleyi inceleyin.
Ana ve yer paylaşımlı DT'ler oluşturma
Ana DT'yi oluşturmak için:
- Ana DT'yi
.dts
bir.dtb
dosyasına derleyin. .dtb
dosyasını, önyükleyicinin çalışma zamanında erişebildiği bir bölüme ([Bölüm DT'leri](#partition) bölümünde ayrıntılı olarak açıklanmıştır) flaşlayın.
Yer paylaşımı DT'sini oluşturmak için:
- Yer paylaşımı DT'sini
.dts
bir.dtbo
dosyasına derleyin. Bu dosya biçimi, düzleştirilmiş DT olarak biçimlendirilmiş.dtb
dosyasıyla aynı olsa da farklı dosya uzantısı nedeniyle ana DT'den ayırt edilebilir. .dtbo
dosyasını, önyükleyicinin çalışma zamanında erişebildiği bir bölüme ([Bölüm DT'leri](#partition) bölümünde ayrıntılı olarak açıklanmıştır) flaşlayın.
DTC ile derleme ve ana makinede DTO sonuçlarını doğrulama hakkında ayrıntılı bilgi için Derleme ve doğrulama bölümüne bakın.
Bölüm DTS'leri
.dtb
ve .dtbo
'yi yerleştirmek için önyükleyicinin çalışma zamanında erişebileceği ve güvenilir bir konumu flash bellekte belirleyin.
Ana DT için örnek konumlar:
- Çekirdek (
image.gz
) eklenmiş önyükleme bölümünün bir parçası - Ayrı DT blob'ları (
.dtb
) özel bölümde (dtb
)
Yer paylaşımlı DT için örnek konumlar:
Şekil 1. .dtbo dosyasını bir odm bölümüne yerleştirin (Bunu yalnızca önyükleyicinizin bir odm bölümünün dosya sisteminden veri yükleme özelliği varsa yapın).
Şekil 2. .dtbo dosyasını dtbo bölümü gibi benzersiz bir bölüme yerleştirin.
Not: Yer paylaşımlı DT bölümünün boyutu cihaza ve ana DT blob'unun üstünde yapılması gereken değişikliklerin miktarına bağlıdır. Genellikle 8 MB yeterlidir ve gerekirse gelecekte genişletmenize olanak tanır.
Sorunsuz (A/B) güncellemeleri destekleyen cihazlarda ana DT ve yer paylaşımlı DT bölümlerinde A/B:
Şekil 3. DTBO bölümü A/B, 1. örnek.
Şekil 4. DTBO bölümü A/B, 2. örnek.
Bootloader'da çalıştırma
Çalıştırmak için:
Şekil 5. Bootloader'da DTO için tipik çalışma zamanı uygulaması.
.dtb
'ü depolama alanından belleğe yükleyin..dtbo
'ü depolama alanından belleğe yükleyin.- Birleştirilmiş bir DT oluşturmak için
.dtb
'ü.dtbo
ile yer paylaşımı yapın. - Birleştirilmiş DT'nin bellek adresini kullanarak çekirdeği başlatın.
Uyumluluğu sürdürme
Ana DTB (SoC tedarikçisinden), DTBO'lar için bir API yüzeyi olarak kabul edilir. DT'yi SoC'ye ortak bir bölüm ve cihaza özel bir bölüme ayırdıktan sonra, gelecekte iki bölümün birbirine uyumlu olmasını sağlamalısınız. Örneğin:
- Ana DT'de DT tanımı. Örneğin, düğümler, mülkler, etiketler. Ana DT'de yapılan herhangi bir tanım değişikliği, yer paylaşımlı DT'de değişiklikleri tetikleyebilir. Örneğin, ana DT'deki bir düğüm adını düzeltmek için orijinal düğüm adıyla eşleşen bir "takma ad" etiketi tanımlayın (üst üste binen DT'nin değişmesini önlemek için).
- DT mağaza konumunu yer paylaşımlı olarak gösterin. Örneğin, bölüm adı, depolama biçimi.
Güvenliği sağlama
Önyükleme yükleyici, DTB veya DTBO'nun güvenli, değiştirilmemiş ve bozulmamış olduğundan emin olmalıdır. DTB veya DTBO'yu güvence altına almak için herhangi bir çözümü kullanabilirsiniz. Örneğin, VBoot 1.0'daki önyükleme resmi imzası veya AVB HASH altbilgisi (VBoot 2.0).
- DTB veya DTBO benzersiz bir bölümdeyse bu bölümü AVB'nin güven zincirine ekleyebilirsiniz. Güven zinciri, donanım korumalı bir güven kökünden başlar ve DTB veya DTBO bölümünün bütünlüğünü ve özgünlüğünü doğrulayan önyükleyiciye gider.
- DTB veya DTBO mevcut bir bölümdeyse (
odm
bölümü gibi) bu bölüm AVB'nin güven zincirinde olmalıdır. (DTBO bölümü,odm
bölümüyle ortak anahtar paylaşabilir.)
Ayrıntılar için Doğrulanmış Başlatma başlıklı makaleyi inceleyin.