Dukungan DTO

Device Tree Overlay (DTO) memperluas implementasi Flattened Device Tree (FDT) yang ada dengan memungkinkan ruang pengguna untuk memodifikasi data pohon perangkat awal di kernel saat runtime dengan memuat FDT overlay tambahan yang mengubah data asli. Android tidak memerlukan pembaruan waktu proses blob DT dari ruang pengguna, namun merekomendasikan agar vendor menambahkan patching devicetree di bootloader dengan bantuan libfdt atau libufdt .

Dukungan Android DTO

Dukungan Android untuk DTO bervariasi berdasarkan rilis Android:

  • Android 7.x dan versi lebih lama tidak memerlukan dukungan devicetree dan tidak memberikan rekomendasi tentang cara vendor meneruskan blob DT ke kernel atau tempat mereka menyimpannya.
  • Android 8.x merekomendasikan dukungan pohon perangkat untuk memisahkan bagian kernel khusus board dan khusus SoC.
  • Android 9 dan yang lebih tinggi memerlukan partisi blob overlay pohon perangkat (DTBO) untuk ada dan setidaknya satu DTO untuk diterapkan.

Persyaratan partisi DTO

Sebagian besar perangkat Android menambahkan blob DT ke kernel pada waktu build dan bootloader memuat blob dari kernel. Namun, karena blob DT dianggap sebagai bagian dari kernel system-on-chip (SoC), Android tidak memiliki persyaratan khusus mengenai cara membuat atau menyimpan blob DT. Perangkat dapat menambahkan blob DT ke kernel atau menyimpan blob di partisi terpisah; satu-satunya persyaratan adalah bootloader mengetahui bagaimana dan dari mana memuat blob DT.

Untuk mendukung DTO, perangkat harus memiliki:

  • Satu partisi DTBO per image kernel untuk overlay DT khusus board dan bootloader harus mengetahui di mana dan bagaimana memuat DTB khusus SoC. Ukuran partisi bergantung pada jumlah perubahan yang diperlukan untuk membuat kernel SoC—pilih ukuran yang masih memiliki ruang untuk pembaruan di masa mendatang; biasanya, ukuran partisi 8 MB sudah lebih dari cukup.
  • Partisi DTO diperbarui untuk perangkat A/B . Kernel pemulihan sama dengan kernel Android, namun partisinya harus diatur untuk perangkat A/B sehingga dapat diperbarui melalui pembaruan over-the-air (OTA). Ukuran partisi bergantung pada perangkat dan jumlah perubahan di atas blob DT kernel SoC utama.

Persyaratan bootloader DTO

Untuk mendukung DTO, bootloader harus:

  • Ketahui bagaimana dan di mana (dengan mempertimbangkan slot boot untuk perangkat A/B) untuk memuat blob DT khusus SoC dengan cara khusus vendor (biasanya diekstraksi dari akhir citra kernel saat blob ditambahkan ke kernel).
  • Ketahui bagaimana dan di mana memuat gumpalan DT overlay dengan cara khusus vendor.
  • Patch blob DT utama dengan overlay sebelum meneruskan pohon perangkat gabungan ke kernel.

Untuk detail lebih lanjut tentang menambahkan dukungan untuk DTO di bootloader, lihat Device Tree Overlay .