Go Down

Topic: Controllo sketch (Read 410 times) previous topic - next topic

ard2011

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

PaoloP

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 $.

ard2011

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?


PaoloP

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.

ard2011

Si è proprio quello che vorrei fare!

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

PaoloP

#5
Jul 04, 2013, 06:11 pm Last Edit: Jul 04, 2013, 06:15 pm by PaoloP Reason: 1
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 :smiley-sweat: 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

ard2011

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?
:smiley-fat:


Go Up