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:
- Kompilasi DT
.dts
utama ke dalam file.dtb
. - Flash file
.dtb
ke dalam partisi yang dapat diakses runtime bootloader (dirinci di bawah).
Untuk membuat overlay DT:
- 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. - 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 |
---|
Partisi ODM |
---|
.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 |
---|
Contoh 2 |
---|
Berjalan di bootloader
Untuk berlari:
- Muat
.dtb
dari penyimpanan ke memori. - Muat
.dtbo
dari penyimpanan ke memori. - Hamparkan
.dtb
dengan.dtbo
untuk menjadi DT gabungan. - 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 partisiodm
).
Untuk detailnya, lihat Boot Terverifikasi .