DTO'ların Uygulanması

DTO'nun uygulanması, aygıt ağacını bölmeyi, oluşturmayı, bölümlemeyi ve çalıştırmayı içerir. Çalışan bir uygulamaya sahip olduktan sonra, iki DT arasındaki uyumluluğu da korumalı ve her bir DT bölümünün güvenliğini sağlamak için bir strateji belirlemelisiniz.

DT'yi Bölme

Aygıt ağacını iki (2) 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.

Cihaz ağaçlarını böldükten sonra, ana DT ve kaplama DT'yi birleştirmenin cihaz için tam bir DT ile sonuçlanması için ana DT ile kaplama DT arasında uyumluluğu sağlamalısınız. DTO formatı ve kuralları hakkında ayrıntılar için, bkz. DTO Sözdizimi . Birden çok cihaz ağacıyla ilgili ayrıntılar için bkz. Birden Çok DT .

Ana ve yer paylaşımlı DT'ler oluşturma

Ana DT'yi oluşturmak için:

  1. Ana DT derleme .dts içine .dtb dosyası.
  2. .dtb dosyasını bootloader çalışma zamanı erişimli bir bölüme Flash (aşağıda ayrıntılı olarak verilmiştir).

Bindirme DT'yi oluşturmak için:

  1. Derleme bindirme DT .dts içine .dtbo dosyası. Bu dosya biçimi, düzleştirilmiş bir aygıt ağacı olarak biçimlendirilmiş .dtb dosyasıyla aynı olsa da, farklı dosya uzantıları onu ana .dtb ayırır.
  2. .dtbo dosyasını önyükleyici çalışma zamanı erişimli bir bölüme Flash.

Ana bilgisayarda DTC ile derleme ve DTO sonuçlarının doğrulanması hakkında ayrıntılar için Derleme ve Doğrulama bölümüne bakınız.

DT'leri bölümleme

Flash bellekte .dtb ve .dtbo koymak için önyükleyici çalışma zamanı erişimli ve güvenilir bir konum .dtbo .

Ana DT için örnek konumlar:

  • Çekirdeğe eklenen önyükleme bölümünün bir parçası ( image.gz ).
  • Ayrılmış bölümde ( dtb ) ayrı DT .dtb ( .dtb ).

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

Benzersiz Bölme
Şekil 1. .dtbo benzersiz bir bölüme koyun, örneğin dtbo bölümü.
ODM Bölümü
Şekil 2. .dtbo odm bölümüne koyun (bunu yalnızca önyükleyicinizin odm bölümünün dosya sisteminden veri yükleme yeteneği varsa yapın).

Not: Kaplama DT bölümünün boyutu, aygıta ve ana DT blobunun üstünde gereken değişiklik miktarına bağlıdır. Tipik olarak, 8 MB fazlasıyla yeterlidir ve gerekirse gelecekte alanın büyümesine izin verir.

Sorunsuz (A / B) güncellemeleri destekleyen cihazlar için, ana DT A / B ve üst üste DT bölümleri:

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

Bootloader'da çalışıyor

Koşmak:

Şekil 5. Önyükleyicide aygıt ağacı kaplaması için tipik çalışma zamanı uygulaması.
  1. .dtb depolamadan belleğe yükleyin.
  2. .dtbo depolamadan belleğe yükleyin.
  3. Birleştirilmiş bir DT olması için .dtbo .dtb ile .dtbo .
  4. Birleştirilmiş DT'nin bellek adresi verilen çekirdeği başlatın.

Uyumluluğun korunması

Ana DTB (SoC satıcısından), DTBO'lar için bir API yüzeyi olarak kabul edilir. Aygıt ağacını bir SoC ortak parçasına ve aygıta özgü bir parçaya ayırdıktan sonra, iki parçayı gelecekte aşağıdakiler dahil karşılıklı olarak uyumlu tutmalısınız:

  • Ana DT'de DT tanımı (örn. Düğümler, özellikler, etiketler) . Ana DT'deki herhangi bir tanım değişikliği, kaplama DT'deki 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 (kaplama DT'sinin değişmesini önlemek için).
  • Yer paylaşımlı DT deposu konumu (örn. Bölüm adı, mağaza formatı) .

Güvenliği sağlamak

Bootloader, DTB / DTBO'nun güvenli, değiştirilmemiş ve bozulmamış olmasını sağlamalıdır. DTB / DTBO'yu korumak 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).

  • DTB / 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 / DTBO bölümünün bütünlüğünü ve orijinalliğini doğrulayan önyükleyiciye gider.
  • DTB / 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ü ile bir ortak anahtarı paylaşabilir).

Ayrıntılar için Doğrulanmış Önyükleme'ye bakın.