Menerapkan DTO

Menerapkan DTO melibatkan membagi pohon perangkat, membangun, mempartisi, dan menjalankan. Setelah Anda memiliki implementasi yang berfungsi, Anda juga harus menjaga kompatibilitas antara dua DT dan menentukan strategi untuk memastikan keamanan setiap partisi DT.

Membagi DT

Mulailah dengan membagi pohon perangkat menjadi dua (2) bagian:

  • DT utama . Bagian SoC-only dan konfigurasi default, disediakan oleh vendor SoC.
  • Hamparan DT . Konfigurasi khusus perangkat, disediakan oleh ODM/OEM.

Setelah membagi pohon perangkat, Anda harus memastikan kompatibilitas antara DT utama dan DT overlay sehingga penggabungan DT utama dan DT overlay menghasilkan DT lengkap untuk perangkat. Untuk detail tentang format dan aturan DTO, lihat Sintaks DTO . Untuk detail tentang beberapa pohon perangkat, lihat Beberapa DT .

Membangun DT utama & overlay

Untuk membangun DT utama:

  1. Kompilasi DT .dts utama menjadi file .dtb .
  2. Flash file .dtb ke dalam partisi bootloader yang dapat diakses runtime (rinci di bawah).

Untuk membangun DT overlay:

  1. Kompilasi overlay DT .dts ke dalam file .dtbo . Meskipun format file ini sama dengan file .dtb yang diformat sebagai pohon perangkat yang diratakan, ekstensi file yang berbeda membedakannya dari DT utama.
  2. Flash file .dtbo ke dalam partisi bootloader yang dapat diakses runtime (seperti yang dijelaskan di bawah).

Untuk detail tentang kompilasi dengan DTC dan verifikasi hasil DTO pada host, lihat Mengkompilasi & Memverifikasi .

Mempartisi DT

Tentukan lokasi bootloader yang dapat diakses runtime dan tepercaya di memori flash untuk meletakkan .dtb dan .dtbo .

Contoh lokasi untuk DT utama:

  • Bagian dari partisi boot, ditambahkan ke kernel ( image.gz ).
  • Pisahkan DT blob ( .dtb ) di partisi khusus ( dtb ).

Contoh lokasi untuk DT overlay:

Partisi Unik
Gambar 1. Masukkan .dtbo ke dalam partisi yang unik, misalnya partisi dtbo .
Partisi ODM
Gambar 2. Masukkan .dtbo ke dalam partisi odm (lakukan ini hanya jika bootloader Anda memiliki kemampuan untuk memuat data dari sistem file partisi odm ).

Catatan: Ukuran partisi DT overlay tergantung pada perangkat dan jumlah perubahan yang diperlukan di atas blob DT utama. Biasanya, 8 MB lebih dari cukup dan memungkinkan ruang untuk tumbuh di masa mendatang jika diperlukan.

Untuk perangkat yang mendukung pembaruan tanpa batas (A/B) , A/B partisi DT utama dan overlay DT:

Contoh 1
Gambar 3. Partisi DTBO A/B, contoh 1.
Contoh 2
Gambar 4. Partisi DTBO A/B, contoh 2.

Berjalan di bootloader

Untuk berlari:

Gambar 5. Implementasi runtime tipikal untuk overlay pohon perangkat di bootloader.
  1. Muat .dtb dari penyimpanan ke dalam memori.
  2. Muat .dtbo dari penyimpanan ke dalam memori.
  3. Overlay .dtb dengan .dtbo menjadi DT gabungan.
  4. Mulai kernel dengan alamat memori dari DT yang digabungkan.

Menjaga kompatibilitas

DTB utama (dari vendor SoC) diperlakukan sebagai permukaan API untuk DTBO. Setelah memisahkan pohon perangkat menjadi bagian umum SoC dan bagian khusus perangkat, Anda harus menjaga agar kedua bagian tersebut saling kompatibel di masa mendatang, termasuk:

  • Definisi DT di DT utama (misalnya node, properti, label) . Setiap perubahan definisi pada DT utama dapat memicu perubahan pada DT overlay. Misalnya, untuk mengoreksi nama node di DT utama, tentukan label "alias" yang memetakan ke nama node asli (untuk menghindari perubahan overlay DT).
  • Overlay lokasi penyimpanan DT (misalnya nama partisi, format toko) .

Memastikan keamanan

Bootloader harus memastikan DTB/DTBO aman, tidak dimodifikasi, dan tidak rusak. Anda dapat menggunakan solusi apa pun untuk mengamankan DTB/DTBO, misalnya, Boot image signature di VBoot 1.0 atau AVB HASH footer (VBoot 2.0).

  • Jika DTB/DTBO berada di partisi unik, Anda dapat menambahkan partisi tersebut ke rantai kepercayaan AVB. Rantai kepercayaan dimulai dari akar kepercayaan yang dilindungi perangkat keras dan menuju ke bootloader, yang memverifikasi integritas dan keaslian partisi DTB/DTBO.
  • Jika DTB/DTBO berada di partisi yang ada (seperti partisi odm ), partisi tersebut harus berada dalam rantai kepercayaan AVB. (Partisi DTBO dapat berbagi kunci publik dengan partisi odm ).

Untuk detailnya, lihat Boot Terverifikasi .