Kami akan membuat papan ARM dengan modem GSM on-board.
Kami ingin dapat meningkatkan firmware ARM melalui udara.
Apakah ada solusi open source yang bagus, andal, untuk itu?
Jika tidak, apakah ada OS berbayar dengan fitur ini?
Kami akan membuat papan ARM dengan modem GSM on-board.
Kami ingin dapat meningkatkan firmware ARM melalui udara.
Apakah ada solusi open source yang bagus, andal, untuk itu?
Jika tidak, apakah ada OS berbayar dengan fitur ini?
Jawaban:
Saya tidak mengetahui adanya solusi yang sudah dibuat sebelumnya tetapi saya akan menjelaskan bagaimana saya mengatasinya dalam satu proyek. Ini tidak sepenuhnya 'tidak bisa diperangi' tapi saya tidak menyadarinya gagal lebih dari ribuan upgrade. Untuk aplikasi ini tingkat kegagalan yang sangat rendah masih akan lebih murah daripada harus mendapatkan akses ke unit.
Aplikasi utama memiliki tiga jenis paket tambahan yang ditambahkan ke protokol komunikasi normal yang mencakup deteksi kesalahan dan coba lagi stategy di atas:
Perintah pembaruan firmware mulai membersihkan area memori yang dicadangkan di Flash SPI eksternal. Ini mengembalikan kesalahan jika unit berjalan dari baterai cadangannya atau jika itu berjalan dari daya eksternal tetapi status baterai di bawah 25%.
Perintah blok tulis menerima alamat offset dan data yang ditulis ke memori Flash eksternal dalam potongan kecil. Protokol tingkat yang lebih tinggi menangani deteksi kesalahan dan transmisi ulang. Setelah setiap blok ditulis, itu dibaca kembali dan diverifikasi sebelum perintah tersebut diakui.
Perintah pembaruan firmware selesai mencakup panjang bahwa firmware yang diterima harus bersama dengan CRC32 dari seluruh gambar untuk verifikasi lebih lanjut. Jika itu cocok dengan isi memori Flash eksternal dan kondisi daya masih OK, panjang yang sama dan CRC32 ditransfer ke area EEPROM bersama dengan 'angka ajaib' untuk menunjukkan bahwa pembaruan firmware sedang menunggu.
Hard loop dijalankan di aplikasi utama untuk memaksa pengawas memulai kembali.
Bootloader (yang terletak di area yang dilindungi tulis dari ARM's Flash) melihat angka ajaib di EEPROM dan sekali lagi memverifikasi CRC32 gambar. Jika semuanya OK, ia akan mentransfer gambar dari Flash eksternal ke area program utama Flash ARM.
Informasi upgrade yang tertunda dihapus dari EEPROM dan hard loop memaksa reboot lain. Kali ini bootloader akan memulai aplikasi utama secara normal.
Meskipun saya belum pernah melihat fase pembaruan gagal menguji rilis firmware baru sebelum menggunakan sangat penting menggunakan metode ini. Jika rilis baru tidak dapat terhubung ke jaringan GSM dan menerima perintah pembaruan di masa mendatang, maka akan memerlukan pembaruan firmware di tempat.
Apakah Anda menjalankan Linux atau RTOS, atau bare metal? Jika menggunakan Debian Anda dapat mengambil snapshot dari sistem file saat ini, lakukan upgrade melalui "apt-get" lalu simpan atau kembalikan perubahan tergantung pada apakah itu berfungsi atau tidak.