DTO'ları uygulama

Cihaz ağacı yer paylaşımlarını (DTO'lar) uygulama; 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ındaki uyumluluğu da korumanız ve her DT bölümünün güvenliğini sağlamak için bir strateji belirlemeniz gerekir.

DT'yi bölme

DT'yi iki bölüme ayırarak başlayın:

  • Ana DT. Yalnızca SoC bölümü ve SoC satıcısı tarafından sağlanan 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'si birleştirildiğinde cihaz için eksiksiz bir DT elde edilir. DTO biçimi ve kurallarıyla ilgili ayrıntılar için DTO söz dizimi başlıklı makaleyi inceleyin. Birden fazla DT hakkında ayrıntılı bilgi için Birden fazla DT kullanma başlıklı makaleyi inceleyin.

Ana ve yer paylaşımı DT'leri oluşturma

Ana DT'yi oluşturmak için:

  1. Ana DT .dts dosyasını .dtb dosyası olarak derleyin.
  2. .dtb dosyasını, önyükleyici çalışma zamanında erişilebilen bir bölüme (bölümlerle ilgili ayrıntılar [Partition DTs](#partition) bölümünde verilmiştir) yükleyin.

Yer paylaşımı DT'sini oluşturmak için:

  1. Yer paylaşımı DT'sini .dts bir .dtbo dosyası olarak derleyin. Bu dosya biçimi, düzleştirilmiş bir DT olarak biçimlendirilmiş .dtb dosyasıyla aynı olsa da farklı dosya uzantısı, bu dosyayı ana DT'den ayırır.
  2. .dtbo dosyasını, önyükleyici çalışma zamanında erişilebilen bir bölüme (bölümlerle ilgili ayrıntılar [Partition DTs](#partition) bölümünde verilmiştir) yükleyin.

DTC ile derleme ve DTO sonuçlarını ana makinede doğrulama hakkında ayrıntılı bilgi için Derleme ve doğrulama başlıklı makaleyi inceleyin.

Bölüm DT'leri

.dtb ve .dtbo öğelerini yerleştirmek için flash bellekte önyükleyici çalışma zamanında erişilebilen ve güvenilen bir konum belirleyin.

Ana DT için örnek konumlar:

  • Başlatma bölümünün bir parçasıdır ve çekirdeğe eklenir (image.gz).
  • Ayrılmış bölümde (dtb) ayrı DT blob'ları (.dtb)

Yer paylaşımlı DT için örnek konumlar:

1. şekil. .dtbo dosyasını bir odm bölümüne yerleştirin (bunu yalnızca önyükleyiciniz bir odm bölümünün dosya sisteminden veri yükleme özelliğine sahipse yapın).

Şekil 2. .dtbo dosyasını, dtbo bölümü gibi benzersiz bir bölüme yerleştirin.

Not: Ek DT bölümünün boyutu cihaza ve ana DT blob'unda yapılması gereken değişikliklerin miktarına bağlıdır. Genellikle 8 MB yeterlidir ve gerekirse gelecekte büyümeye olanak tanır.

Sorunsuz (A/B) güncellemeleri destekleyen cihazlarda ana DT ve yer paylaşımı DT bölümlerinde A/B testi yapın:

3.Şekil DTBO bölümü A/B, 1. örnek.

Şekil 4. DTBO bölümü A/B, örnek 2.

Bootloader'da çalıştırma

Çalıştırmak için:

5.şekil Bootloader'da DTO için tipik çalışma zamanı uygulaması.

  1. .dtb öğesini depolama alanından belleğe yükleyin.
  2. .dtbo öğesini depolama alanından belleğe yükleyin.
  3. Birleştirilmiş DT olması için .dtb ile .dtbo'yi yerleştirin.
  4. Birleştirilmiş DT'nin bellek adresi verildiğinde çekirdeği başlatır.

Uyumluluğu koruma

Ana DTB (SoC satıcısından) DTBO'lar için bir API yüzeyi olarak kabul edilir. DT'yi SoC'ye özgü bir bölüm ve cihaza özgü bir bölüm olarak ayırdıktan sonra, aşağıdakiler de dahil olmak üzere iki bölümün gelecekte birbirleriyle uyumlu olmasını sağlamanız gerekir:

  • Ana DT'deki DT tanımı. Örneğin, düğümler, özellikler, etiketler. Ana DT'deki herhangi bir tanım değişikliği, yer paylaşımı DT'sinde değişikliklere neden olabilir. Ö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 (bindirme DT'nin değiştirilmesini önlemek için).
  • Overlay DT mağaza konumunu kullanın. Örneğin, bölüm adı, mağaza biçimi.

Güvenliği sağlama

Bootloader, DTB veya DTBO'nun güvenli, değiştirilmemiş ve bozulmamış olmasını sağlamalıdır. DTB veya DTBO'yu güvenli hale getirmek için herhangi bir çözümü kullanabilirsiniz. Örneğin, VBoot 1.0'da önyükleme görüntüsü imzası veya AVB HASH altbilgisi (VBoot 2.0) kullanılabilir.

  • DTB veya DTBO benzersiz bir bölümdeyse bu bölümü AVB'nin güven zincirine ekleyebilirsiniz. Güven zinciri, donanımla korunan bir güven kökünden başlar ve DTB veya DTBO bölümünün bütünlüğünü ve gerçekliğini doğrulayan bootloader'a kadar devam eder.
  • DTB veya DTBO mevcut bir bölümde (ör. odm bölümü) bulunuyorsa 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ılı bilgi için Doğrulanmış Başlatma başlıklı makaleyi inceleyin.