Aggiornamento firmware remoto Arduino Nano


8

Sto lavorando su Arduino Nano (memoria flash da 32 KB di cui 2 KB utilizzati dal caricatore di avvio, SRAM da 2 KB, EEPROM da 1 KB) .

Il microcontrollore riceve l'input da un dispositivo elettrico tramite il modulo RS485 e pubblica i dati letti su un server remoto utilizzando il modulo GPRS A6 . Il prodotto dovrebbe interagire con il server remoto, pubblicando i dati a intervalli.

Ho completato la parte di integrazione e il dispositivo funziona perfettamente, raccogliendo dati e pubblicando sul server (a circa 10-15 km di distanza). L'unica sfida che sto affrontando è che se ci sono 100 di questi dispositivi e devo aggiornare il firmware, usando il server remoto (o qualsiasi altro meccanismo adatto), come devo procedere con esso.

Ho passato molti post che suggeriscono di usare un altro Arduino come ISP, questo potrebbe essere il mio ultimo approccio (poiché aumenterebbe il costo finale del prodotto).

L'aggiornamento del firmware over the air non è ancora chiaro come nella community di Stack Exchange per i microcontroller di fascia bassa. Qualsiasi discussione può essere di grande aiuto per molti.


Descrivere "posizione remota", 10 metri, 1 km, 10 km di distanza per l'utente?
Bence Kaulics

@BenceKaulics stiamo utilizzando il modulo GPRS per inviare una richiesta al microcontrollore che dista circa 10 Km.
Ashish K,

3
Devi descrivere il tuo caso d'uso in modo più chiaro, incluso lo stack del software. Dai un'occhiata alle altre domande sugli aggiornamenti over-the-air .
Sean Houlihane,

Si tratta di un nuovo sviluppo o stai cercando di aggiornare un prodotto esistente?
Sean Houlihane,

@ SeanHoulihane È un nuovo sviluppo. Potrei scegliere qualsiasi microcontrollore (il costo è l'unico limite) che può inviare dati a un server in una posizione remota (10 Km) intorno. Ho usato un modulo GPRS per inviare dati e l'unica sfida che sto affrontando attualmente come aggiornerei il firmware da remoto.
Ashish K,

Risposte:


9

Risposta breve: è possibile.

Risposta lunga: è complicata. Ecco perché ci sono così tante implementazioni pessime là fuori.

Per lo meno hai due passaggi in ogni processo di aggiornamento remoto / over-the-air.

  1. Firmware di trasmissione
  2. Installazione del firmware.

Naturalmente, questo è il minimo indispensabile. Se stai lavorando in iterazioni è anche un primo passo molto valido. Se hai più di un dispositivo, dovrai essere in grado di associare il firmware corretto al dispositivo corretto . Se vuoi ridurre la possibilità di murare il tuo dispositivo, vorrai un modo per verificare lo stato del tuo dispositivo prima e dopo l'aggiornamento , ti consigliamo anche di proteggere il trasporto e renderlo il più affidabile possibile e, naturalmente, avere una strategia di fallback in caso di errore di aggiornamento .

Sono altri cinque passaggi che ti portano verso un prodotto affidabile. Ci sono buone pratiche là fuori per queste cose, ma dipendono dall'ambiente del progetto. Forse è qualcosa di economico e il tasso di fallimento del 5% sugli aggiornamenti va bene, forse è un pacemaker e anche un errore in totale è inaccettabile perché porta a uno scenario fatale. Dovrai trovare soluzioni a quelle basi che si adattano al tuo prodotto.

Inoltre, ci sono dozzine di cose diverse da considerare. Avrai clienti? Devi informarli? Hanno voce in capitolo nella tempistica / installazione degli aggiornamenti? I tuoi dispositivi sono in diversi paesi? Si applicano restrizioni legali? Si applicano gli standard normativi? Quanti dispositivi stai aggiornando? 1? Una dozzina? Centinaia? Milioni?

Se aggiorni cinque dispositivi, il processo può essere molto loquace. Se stai aggiornando milioni che potrebbero diventare molto costosi. E sì, ciò influisce su ciò che ho elencato sopra come passaggio uno, trasmettendo il firmware. Forse crei un pacemaker e un costo di processo di centinaia di messaggi per aggiornamento va bene considerando l'alternativa.

Queste sono solo le domande che ho scritto in due minuti, quindi questa lista non è certamente esaustiva. Il mio punto è senza informazioni riguardo allo scenario che non possiamo davvero aiutarti correttamente.


Grazie mille @Helmar, aggiornerò la domanda con il maggior numero di dettagli possibile. Per i microcontroller che non supportano un sistema operativo in esecuzione su di esso, l'aggiornamento del firmware remoto è ancora vago e una buona soluzione chiara non mi aiuterebbe solo, ma per molti che stanno lavorando su schede di sviluppo di fascia bassa. Ti chiedo di controllarlo anche dopo l'aggiornamento.
Ashish K,

1
Possibile, a condizione che la piattaforma consenta di suddividere il flash in almeno 3 regioni (o ti piace correre dalla RAM mentre ripeti il ​​flashing e hai molti pezzi di ricambio o un JTAG distribuibile in remoto).
Sean Houlihane,

@SeanHoulihane la serie ATmega non può essere eseguita dalla RAM.
Chris Stratton,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.