Jawaban sederhananya adalah ya - Anda memerlukan cukup banyak blok flash untuk mendukung bootloader dan gambar kode A / B jika Anda menginginkan keandalan yang tinggi. Sebelum mengaktifkan gambar baru, Anda dapat menulis semuanya, memverifikasi dan berpotensi mencoba lagi.
Namun ini adalah strategi yang mahal / andal dan ada beberapa hal yang dapat Anda lakukan untuk mengurangi biaya overhead. Dukungan tingkat rendah untuk pembaruan OTA juga dapat datang sebagai bagian dari firmware perangkat atau OS, sehingga Anda dapat menghindari rolling milik Anda sendiri kecuali jika Anda ingin belajar. Fitur ini dapat digambarkan sebagai FOTA
.
Mempartisi basis kode Anda memungkinkan untuk pembaruan tambahan, jika bootloader terbaik dapat memunculkan koneksi jaringan, mengunduh dan memverifikasi kode tanpa perlu kode pengguna cadangan. Dengan gateway lokal, manajemen tugas ini dapat didelegasikan dari titik akhir berbiaya rendah.
Banyak perangkat memiliki sedikit flash penghapus kata, dan bahkan jika gagal, Anda biasanya dapat mengatur bit tanpa perlu menghapus seluruh blok. Fitur-fitur ini dapat digunakan untuk memanipulasi tabel lompatan dan menjahit kode bersama yang diperbarui dalam potongan ukuran blok. Bahkan jika Anda awalnya merencanakan untuk ruang kode A / B penuh, Anda mungkin perlu kembali ke skema yang lebih kompleks ketika basis kode tumbuh terlalu banyak.
Untuk memperjelas fungsionalitas yang dapat dicapai dengan solusi firmware-over-the-air yang canggih, bootloader dan berpotensi tumpukan komunikasi utama dapat tetap ada sementara ruang aplikasi pengguna yang tersisa penuh di-flash ulang. Ini tidak memerlukan overhead (terutama jika partisi blok lunak). Dalam skenario di mana tumpukan komunikasi perlu ditingkatkan, wilayah yang umumnya digunakan untuk kode aplikasi dapat sementara digunakan selama pengunduhan dan verifikasi. Untuk mencapai ini diperlukan beberapa dukungan di SoC, tetapi perangkat generasi ke-2 dan ke-3 yang dirancang dengan pemikiran ini sudah ada.