Controllo sketch

Ciao,

avrei bisogno di effettuare un controllo sullo sketch di cui sto effettuando l'upload sul mio arduino: prima di fare l'upload devo controllare che lo sketch non sia stato "cambiato".
Avevo pensato ad una funzione di hash da calcolare e controllare prima dell'upload.

Potete consigliarmi su come fare ciò?

Grazie

Puoi compilare lo sketch e recuperarti il file .hex dal percorso indicato impostando il verbose per la compilazione dalla preferenze.
Su quel file calcoli l'hash.
Se devi distribuire il codice puoi distribuire l'hex che sarà da caricare con con avrdude da linea di comando perché al momento l'IDE non supporta il comando.

Altrimenti nell'IDE, ti accorgi di modifiche perché sulla tab affianco al nome dello sketch appare il $.

Ok grazie.

Ma mi sorge una domanda: ho estratto il file .hex, ho calcolato l'hash.

Dopo di che come farebbe Arduino a controllare l'hash e se è uguale a caricare "autonomamente" lo sketch?

Arduino non fa nessun controllo sullo sketch in arrivo.
Se vuoi fare una cose del genere devi modificare il bootloader, ma è complicato.
Credo di aver capito che vuoi aggiungere una sorta di firma digitale allo sketch?

Oppure ti crei una tua applicazione per PC per effettuare l'upload e demandi a questa il controllo dell'hash.

Si è proprio quello che vorrei fare!

Ti viene in mente un altro modo?
In che senso dovrei modificare il bootloader?

Dovresti modificare il bootloader, ovvero quel programma che, se presente, parte all'accensione del micro e ne permette la programmazione via seriale.
Le modifiche riguarderebbero il controllo del file .hex firmato digitalmente, la sua decodifica in memoria e la scrittura sulla flash.
A che pro? E' contro ogni filosofia open source :sweat_smile: a parte veramente complesso da realizzare.
Meglio a quel punto che distribuisci direttamente l'Atmega328 col firmware bloccato.

Prova a vedere qui
--> http://www.avrfreaks.net/index.php?name=PNphpBB2&file=printview&t=67920&start=0
--> http://www.avrfreaks.net/index.php?name=PNphpBB2&file=printview&t=94544&start=0

uhmm, oppure potrei far leggere ad un altro componente il file .hex con hash e se è uguale fare la conversione per la board.

Ma in tutto ciò: quale componente potrebbe fare ciò e soprattutto come farei a fare l'upload?
:drooling_face: