Menerapkan DTO

Penerapan DTO melibatkan pembagian pohon perangkat, pembuatan, partisi, dan pengoperasian. Setelah Anda memiliki implementasi yang berfungsi, Anda juga harus menjaga kompatibilitas antara kedua DT dan menentukan strategi untuk memastikan keamanan setiap partisi DT.

Membagi DT

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

  • DT Utama . Bagian khusus SoC 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 tersebut. 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 ke dalam file .dtb .
  2. Flash file .dtb ke dalam partisi yang dapat diakses runtime bootloader (dirinci di bawah).

Untuk membuat overlay DT:

  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 yang dapat diakses runtime bootloader (seperti yang dijelaskan di bawah).

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

Mempartisi DT

Tentukan lokasi yang dapat diakses dan dipercaya waktu proses bootloader di memori flash untuk meletakkan .dtb dan .dtbo .

Contoh lokasi DT utama:

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

Contoh lokasi untuk overlay DT:

Partisi Unik
Gambar 1. Masukkan .dtbo ke dalam partisi unik, misal 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 bergantung pada perangkat dan jumlah perubahan yang diperlukan di atas blob DT utama. Biasanya, 8 MB sudah lebih dari cukup dan memberikan ruang untuk berkembang di masa depan jika diperlukan.

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

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 umum untuk overlay pohon perangkat di bootloader.
  1. Muat .dtb dari penyimpanan ke memori.
  2. Muat .dtbo dari penyimpanan ke memori.
  3. Hamparkan .dtb dengan .dtbo untuk menjadi DT gabungan.
  4. Mulai kernel dengan alamat memori DT yang digabungkan.

Mempertahankan 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 tetap 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 memperbaiki nama simpul di DT utama, tentukan label "alias" yang memetakan ke nama simpul asli (untuk menghindari perubahan DT overlay).
  • Lokasi penyimpanan DT overlay (misalnya nama partisi, format penyimpanan) .

Memastikan keamanan

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

  • Jika DTB/DTBO berada dalam 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 sudah 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 .