Gunakan chip yang memiliki lebih dari dua kali jumlah memori Flash yang Anda perlukan untuk kode Anda. Dengan cara ini Anda bisa mendapatkan firmware baru ke memori ini sambil tetap meninggalkan yang lama jika terjadi kesalahan.
Setelah Anda mendekripsi dan memverifikasi checksum pada firmware baru, bootloader dapat menyalinnya ke lokasi final, menggantikan yang lama. Jika terjadi kesalahan selama bagian ini, setelah hard-reset bootloader akan melihat bahwa firmware baru tidak valid (dengan menjalankan checksum sekali lagi) dan coba lagi penyalinan.
Ini adalah cara paling sederhana dan paling mudah saya tahu. Ini juga memerlukan sedikit kode dalam bootloader dan tidak memerlukan duplikasi fungsi apa pun antara program utama dan bootloader (Anda tidak memerlukan logika komunikasi apa pun di bootloader).
Gunakan bootloader dan beberapa flash ekstra KB.
Pemutakhiran dilakukan oleh bootloader, dengan mengirimkan beberapa perintah khusus melalui UART, USB, I2C, atau protokol lain. Hanya kode utama yang pernah diperbarui - kode bootloader tidak pernah disentuh kecuali melalui programmer eksternal (yaitu JTAG / PICkit untuk PIC dll.)
Jika pembaruan gagal (listrik mati, seseorang tersandung kabel atau alasan lain), maka widget tidak akan berfungsi, tetapi bootloader akan tetap ada di sana sehingga pemutakhiran dapat dicoba lagi.
Bendera dapat diatur dalam beberapa byte di suatu tempat yang mencegah eksekusi kode utama salah karena belum sepenuhnya diperbarui.
sumber
Jika perangkat Anda relatif mahal dan Anda dapat membayar biayanya (dan pelanggan Anda peduli dengan peningkatan), Anda dapat melakukan ini ...
(umumnya teknik ini membutuhkan penyimpanan eksternal atau penggunaan jtag yang licik ..)
Punya program mikro yang diperbaiki (seperti PIC kecil) yang dapat menghentikan sistem dan memprogram ulang.
karena Anda tidak dapat mengubah firmware "upgrade prosesor", itu tidak akan pernah salah.
1) pengguna dapat meningkatkan perangkat
2) jika upgrade gagal, mereka selalu dapat mencoba lagi. Itu tidak bisa ditutup
3) bahkan ketika perangkat target Anda tidak mendukung boot-loader (hanya ingin mem-boot dan menjalankan) Anda masih dapat membuatnya melakukan apa yang Anda inginkan.
berfungsi untuk FPGA, DSP, dan target eksentrik lainnya.
Dapat memiliki antarmuka pengguna yang sangat rapi (bahkan PIC dapat menjalankan server web ....)
sumber
Pastikan produk Anda memiliki beberapa antarmuka serial sederhana , lebih disukai EIA232. Konektor non-standar OK jika Anda tidak memiliki ruang untuk DB-9. Misalnya konektor TRS adalah semua yang Anda butuhkan untuk TxD, RxD dan ground.
Saat memprogram perangkat pertama kali, sertakan bootloader . Ini harus sesederhana mungkin , karena cepat atau lambat Anda ingin memutakhirkan bootloader itu sendiri jika memerlukan fitur baru. (Anda mungkin bahkan tidak bisa memutakhirkannya)
Kemudian konektor TRS. Gunakan jack dengan sakelar sehingga Anda dapat mendeteksi ketika ada konektor. Cukup periksa segera dari reset, dan mulai bootloader jika steker ada, jika tidak jalankan aplikasi. Dengan begitu bootloader dan program aplikasi pengguna tetap terpisah dengan baik. (Pemeriksaan sebenarnya adalah bagian dari bootloader; kita akan membutuhkannya terlepas dari versi aplikasi, jika tidak kita tidak akan bisa masuk ke bootloader!)
sumber
Peralatan apa yang akan tersedia oleh 'upgrader'? PC, stik USB, kartu micro SD?
Salah satu caranya adalah memiliki aplikasi dalam item yang dapat dilepas (usb stick, kartu SD, dll). Chip memuat aplikasinya dari item. Upgrade Anda cukup menukar item dan reboot.
Chip mikrokontroler ARM dan Cortex yang saya tahu (NXP, Atmel) semuanya memiliki bootloader serial built-in, jadi jika updater Anda datang dengan PC dan kabel serial (dan Anda telah mengatur antarmuka port COM) ia dapat dengan mudah mengunduh Anda memperbarui.
sumber