Upload hex file con avrdude

Salve ragazzi, non linciatemi per quello che sto per chiedere, mi ricordo che la cosa era già stata discussa in passato ma non riesco a trovarla nei vecchi post, è un'ora che cerco senza esito... Dovrei cercare di fare una specie di arduino autoprogrammante ossia capace di caricare da solo alcuni sketch già compilati. Quello che ho pensato di fare è scrivere i vari sketch da caricare sull'atmega328 e compilarli ottenendo così i vari file hex; successivamente caricare uno di questi file da riga di comando usando avrdude. So che sembra un giro pazzesco oppure una cosa totalmente inutile, però quello che vorrei fare è un pò più automatizzato, cerco di spiegarmi un pochino meglio. Sul pc ci sarà un programma scritto in processing che in base a certi eventi lancerà il comando per caricare uno dei vari file hex sull'arduino. Ora vengo alla parte dolente: per ora so soltanto generare i file hex, ma non so il comando da lanciare per fare l'upload ( immagino qualcosa tipo "avrdude percorso file.hex" e chissà cos'altro, fin'ora in rete ho trovato solo comandi per i fuse). Altra cosa importante, ho soltanto dei 2009 e kubuntu sui miei pc mentre questo sistema andrà sul pc di mio cugino che ha una uno e seven come sistema operativo. I test li farò io sui miei pc, prima però di cominciare a fare qualcosa vorrei sapere se poi incontrerò dei problemi quando userò la uno e seven. Ringrazio chi mi vorrà dare una mano Saluti

Questo thread può fare al caso tuo: http://arduino.cc/forum/index.php/topic,64278.0.html

Lì parlo del bootloader ma la procedura vale per qualunque file .hex.

Me lo studio di corsa, grazie Leo! Spero di non aver problemi...

Impossibile 8)

E dai però, ero partito molto motivato :)

Se hai difficoltà fammi sapere, che mi sono scritto la sintassi per Windows in un file, che ho in lab, dopo esserci riuscito per la prima volta un paio di giorni fa.

ciao Pelletta Non vedo la necessiá di quello che chiedi di fare. L' unica causa che mi viene in mente é che i 32kByte Flash del ATmega328 non bastano per il Tuo programma. In quel caso la soluzione sono: un Arduino Mega (o Seeeduino mega) un EEprom, FRAM o schedina SD per tenere Dati come stringhe ecc. Ciao Uwe

Uwe qua non è questione di spazio, devo solo fare l'upload di un hex direttamente sull'atmega senza passare dall'ide ma da riga di comando con avrdude, tutto qua (per me è più facile da dirsi che a farsi). Sinceramente non saprei nemmeno che senso potrebbe avere caricare un nuovo hex per questione di memoria... tanto il programma mica si può caricare in più volte, se lo sketch fosse stato più grande avrei scelto un altro processore senza impazzire più di tanto.

Cercando in rete ho trovato dei tools ma non posso usarli perchè non posso lanciarli da riga di comando, li posto giusto nel caso servissero a qualcuno: ArdUp http://smileymicros.com/blog/2010/10/11/ardup-an-arduino-hex-file-uploader/ Arduino Hex Uploader and Programmer http://www.ngcoders.com/downloads/arduino-hex-uploader-and-programmer Flashing Grbl Hex to Arduino Uno in Ubuntu 10.4 http://academy.cba.mit.edu/tutorials/grbl2arduinUno/grbl2arduinoUnoF.html e ce ne sono anche altri ma non ho trovato niente per windows. Continuo le ricerche nel frattempo.

@Menniti: che stai preparando la versione 4 della guida per caso? Saluti a tutti

Ovviamente il tuo silenzio lo prendo come un tentativo riuscito, giusto?

anche se processing crosscompila, i comandi per la shell sono diversi da windows a ubuntu, quindi quando scrivi l'applicazione , devi riconoscere il sistema operativo su cui ti trovi ed agire di conseguenza cambiando al volo la sintassi dei comandi per avrdude a seconda dell'os in cui ti trovi. ...ma ci avevi già pensato vero?

@Brainbooster: si si, ne ero consapevole che i comandi non saranno gli stessi tra i due os, ma questo non sarà un problema.

però per fare quello che dici hai bisogno di inviare un hardreset ad arduino, e dialogare con il bootloader appena diviene disponibile.

Urca, ogni volta ne esce fuori una nuova…
proverò con la 2009 e vedo che succede

Aspetta. Se lanci avrdude da terminale non è necessaria tale operazione dato che è il software che si prende la briga di dialogare con l'Arduino, inviare il reset e far partire la programmazione del micro.

Ho idea che a Pelletta si stia incasinando il cervello, a motivo di una discussione corollaria che ha messo in piedi BB, tanto per fargli uno sgambetto anzitempo ;) Cioè, voglio dire che se questo nostro amico cerca di fare la "semplice" operazione di invare un file hex ad un chip in stand alone tramite Arduino, bisognerebbe aiutarlo, come avete fatto con me, ad arrivare alla sintassi esatta. Semmai poi si va a vedere (penso che Leo e BB stiano parlando di due cose differenti) come fare ad analizzare il S.O. presente nella macchine e decidere quale sintassi usare (mi pare questo l'intervento di BB), e quindi affrontare la questione dell'hard reset. Io avevo capito che aveva risolto, se non ha risolto con questo primo passaggio direi che lo si possa aiutare a farlo.

+1 per Michele: qui son tutte pippe mentali XD XD

Pelletta ha detto che da Processing avrebbe lanciato avrdude da terminale: c'è bisogno di hard reset con la 2009? Il segnale di reset per la riprogrammazione non lo invia avrdude stesso (tramite il chip FTDI) come nella UNO? Chiarito questo, stessa cosa dicasi del riconoscere il SO: Pelletta ha specificato che il progetto sarà destinato ad un parente con Windows, quindi non c'è da riconoscere nulla, secondo me. XD Basta prendere la sintassi del comando così come gliel'ho passata io e con quello farà le sue prove su Kubuntu/Linux. Poi, una volta sistemato tutto, basterà adattare la sintassi a Windows, che poi sono poche modifiche, quelle che tu stesso, Miché, hai postato tempo fa, se non ricordo male, che sono alla fine solo quelle di adattamento dei percorsi delle cartelle (Linux usa "/", mentre Windows usa "\"; più altre sciocchezze varie).

leo72: +1 per Michele: qui son tutte pippe mentali XD XD

Pelletta ha detto che da Processing avrebbe lanciato avrdude da terminale: c'è bisogno di hard reset con la 2009? Il segnale di reset per la riprogrammazione non lo invia avrdude stesso (tramite il chip FTDI) come nella UNO? Chiarito questo, stessa cosa dicasi del riconoscere il SO: Pelletta ha specificato che il progetto sarà destinato ad un parente con Windows, quindi non c'è da riconoscere nulla, secondo me. XD Basta prendere la sintassi del comando così come gliel'ho passata io e con quello farà le sue prove su Kubuntu/Linux. Poi, una volta sistemato tutto, basterà adattare la sintassi a Windows, che poi sono poche modifiche, quelle che tu stesso, Miché, hai postato tempo fa, se non ricordo male, che sono alla fine solo quelle di adattamento dei percorsi delle cartelle (Linux usa "/", mentre Windows usa "\"; più altre sciocchezze varie).

Appunto... XD

Caro professore, vedo che leggi anche nel pensiero ultimamente.... A dire la verità sono ancora lontano dalla soluzione, più leggo in rete e più mi confondo. Mi sembra strano di non essere riuscito ancora a trovare il comando che lancia l'IDE per programmare il chip, pensavo fosse più discusso l'argomento. Più che altro come prima cosa vorrei riuscire a caricare il file hex da shell bypassando l'IDE, ovviamente so che i comandi saranno lanciati diversamente per via dei diversi sistemi operativi ma questo viene dopo. Per quanto riguarda il programma scritto in processing che dovrà fare il lavoro sporco non ho problemi tanto riesco a compilarlo per entrambi i sistemi operativi, si tratterà dunque solo di cambiare il modo di lanciare il comando. La mia perplessità iniziale riguardava inoltre i problemi che potevo incontrare (sempre se ci sono) usando ad esempio l'arduino uno visto che non ce l'ho e non posso testarlo; per quanto riguarda la 2009 posso fare tutte le prove possibili e immaginabili anche a costo di fonderne una :) Saluti

Edit: nel frattempo che stavo scrivendo avete già messo due nuovi post, grazie per l'interesse ragazzi... corro a leggere le novità

Ti riformulo la domanda: ma seguendo quanto scritto da me, ci sei riuscito oppure no? Mi par di essere l'unico sulla faccia del pianeta ad aver usato un Arduino per flashare un Atmega standalone usando avrdude da terminale :D

PS: da IDE non puoi fare questa operazione semplicemente perché anche l'IDE è un frontend per comandi da terminale quali appunto avrdude, avrsize ecc... e perché i file generati dall'IDE nascono e muoiono con essa. Per prepararti i vari Hex devi compilare i vari sketch e poi andare nella cartella temporanea dove sono creati e da lì copiarteli al sicuro da qualche parte. Una volta fatto questo, hai tutti i firmware che vuoi pronti all'uso, da dare in pasto direttamente ad avrdude.

leo72: Ti riformulo la domanda: ma seguendo quanto scritto da me, ci sei riuscito oppure no? Mi par di essere l'unico sulla faccia del pianeta ad aver usato un Arduino per flashare un Atmega standalone usando avrdude da terminale :D

PS: da IDE non puoi fare questa operazione semplicemente perché anche l'IDE è un frontend per comandi da terminale quali appunto avrdude, avrsize ecc... e perché i file generati dall'IDE nascono e muoiono con essa. Per prepararti i vari Hex devi compilare i vari sketch e poi andare nella cartella temporanea dove sono creati e da lì copiarteli al sicuro da qualche parte. Una volta fatto questo, hai tutti i firmware che vuoi pronti all'uso, da dare in pasto direttamente ad avrdude.

Leo, gli farai venire le manie di persecuzione; lui ha scritto:

Più che altro come prima cosa vorrei riuscire a caricare il file hex da shell bypassando l'IDE, ovviamente so che i comandi saranno lanciati diversamente per via dei diversi sistemi operativi ma questo viene dopo.

Perché hai aggiunto il tuo PS? :astonished:

Mi par di essere l'unico sulla faccia del pianeta ad aver usato un Arduino per flashare un Atmega standalone usando avrdude da terminale :D

Se è così, da 3-4 giorni siamo in due :grin:

@ BUD Pelletta: ci sentiamo domani.... tu intanto prepara i tuoi hex per le prove