Skenario
Saya ingin memperbarui perangkat IoT murah dengan over-the-air dengan firmware baru memperbarui mikrokontroler perangkat. Memori mikrokontroler adalah memori flash dalam kisaran 32k hingga 128k (setiap sen dihitung). Memori murah ini memiliki satu batasan utama: hanya dapat dihapus dengan bijaksana.
Pertanyaan
Apakah itu berarti saya tidak dapat membuat pembaruan diferensial ( delta )? Apakah saya harus selalu memperbarui seluruh memori pengontrol (atau paling tidak sebagian besar)?
Saya ingin mengurangi kebutuhan untuk mem-flash semuanya dan berisiko merusak perangkat sepenuhnya. Adakah strategi yang ada saat memasang mikrokontroler di udara?
Jawaban:
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.
sumber
Selain kode Anda yang melakukan pembaruan yang relatif statis, Anda perlu menyimpan dua gambar di penyimpanan Anda: gambar aktif dan gambar cadangan. Kapan pun, Anda perlu memperbarui, lakukan di cadangan, lalu alihkan agar aktif. Setelah stabil, perbarui gambar aktif lama yang sekarang seharusnya menjadi cadangan Anda.
Dengan mengingat hal itu, Anda dapat menggunakan algoritme level-aus saat memperbarui kedua gambar. Kode untuk algoritme tersebut mungkin memakan waktu sekitar 10-15% dari total penyimpanan, tetapi sangat berharga untuk memperpanjang umur perangkat.
( Techtarget.com: Kenaikkan level pakai )
sumber
Freescale Semiconductor menjelaskan cara upgrade firmware over-the-air yang kuat untuk Mikrokontroler Kinetis mereka .
Ini disebut: Program Flash Memory Swap .
Anda dapat memperbarui blok lalu menukarnya.
Dokumen yang ditautkan memuat uraian terperinci.
Ini memastikan peningkatan firmware yang lebih aman, tetapi karena membutuhkan lebih banyak flash memroy, tentu lebih mahal . Juga tidak berlaku untuk semua jenis mikrokontroler, hanya yang mendukung swap blok flash internal.
sumber