Salve a tutti,
sto programmando Arduino 2009 direttamente in avr-c (senza usare l'ide...).
Volevo sapere se e come posso fare l'upload dell'hex da me generato su Arduino tramite il bootloader presente.
p.s.
per programmare sto usando un IDE c/c++ che si chiama Code::Blocks...
lo consiglio per qualsiasi programma abbia a che fare con c/c++ !! supporta davvero di tutto!
Ciao, premesso che non posso esserti utile, sono interessato a ciò che stai facendo, mi puoi dare maggiori info sulla tecnica che stai usando (hardware e software), possibilmente con dei link di riferimento?
Grazie.
Ciao, premesso che non posso esserti utile, sono interessato a ciò che stai facendo, mi puoi dare maggiori info sulla tecnica che stai usando (hardware e software), possibilmente con dei link di riferimento?
Grazie.
L'IDE per la programmazione c/c++ Code::Blocks, permette di avviare direttamente diversi progetti, tra cui, progetti console c/c++, progetti qt4, fltk, gtk+, librerie, e anche progetti avr...
Io lo uso per l'università, per programmare sia a livello di shell che con interfacce grafiche, in c/c++; e mi sono accorto che permette anche di produrre codice hex per i microcontrollori atmel; motivo per cui, vorrei abbondonare l'ide di arduino, per un approccio diretto con il avr-c.
Una cosa simile la chiedevo in un altro topic. Ragionando, non mi sembrava possibile farlo con il bootloader presente, ma devi considerare che l'IDE di arduino non fa altro che chiamare avrdude e fagli trasferire l'hex generato, senza alterare il bootloader. Non ho le idee chiarissime a riguardo, penso che leo72 possa aiutarti meglio, comunque continuo a seguire perche' interessa anche me
L'IDE fa proprio ciò che hai detto, lavora come un frontend per diversi programmi, tra cui avrdude, che viene usato impostando l'Arduino come un programmatore simil-STK500. In questo modo avrdude dialoga con il micro Atmega8U2 (Uno) o con il chip FTDI (2009) che rispediscono al bootloader dell'Atmega328 i dati in arrivo sulla seriale.
In effetti è possibile usare direttamente avrdude bypassando l'IDE semplicemente usando un comando come questo:
1a nota:
si può usare solo avrdude fornito con l'IDE che, presumo, sia patchato perché l'avrdude che ho sul mio sistema restituisce un errore di firma probabilmente legata al programmatore: la scheda Arduino emula un STK500, ma NON è un STK500.
2a nota:
/percorso/sketch.cpp.hex è il file in formato HEX da inviare all'Arduino
@michele:
sarebbe forse da inserire nella 4a edizione della guida
EDIT:
confermo, è patchata. Nell'output disumano che avrdude produce non avevo notato le prime righe, dove avrdude "sputa" fuori la versione. Ecco: avrdude: version 5.4-arduino, compiled on Oct 22, 2007 at 13:15:12
@Leo
XD
Tutto quel che desideri per me sono ordini, amico mio, ma io non ci capisco una benemerita m (è siciliano ;))
Per ora ho capito che il collegamento hardware resta uguale e che la differenza sta nel fatto che IDE prima compila il file che "noi" scriviamo in "±"C, trasformandolo in Hex, e poi lo manda al chip di Arduino dialogando con l'interfaccia seriale o usb-seriale che sia; invece quest'avr&dispari permette di spedire direttamente il file scritto in HEX, da linea di comando (noi windowisti lo chiamiamo "prompt di dos" :~), senza usare l'IDE. Domande:
1 - Cosa ho sbagliato in questa descrizione di ciò che "dico d'aver capito"?
2 - Qual è il vantaggio o la necessità di bypassare l'IDE?
3 - Come faccio a creare un file hex per fare la prova? Ho usato recentemente, per riprendere i miei vecchi ricordi di Assembler, un simulatore per il 68000 (Asim Tool), che con la compilazione mi genera dei file in esadecimale, ma usa un'estensione .h68.
Questo sarebbe un decente punto di partenza; intanto, risolto il problema del consumo dei chip in stand alone (scriverò un paio di pagine in un file separato, credo sia estremamente utile, mi dedico alle varie tecniche seriali di cui si parla nell'altro post, alla fine metteremo tutto nella 4a versione.
Grazie!
non mi pare tu abbia sbagliato nulla. E' così: l'IDE è un frontend, vale a dire un'interfaccia che si appoggia su altri programmi. Nello specifico usa avr-gcc per creare il file HEx, che altro non è che un compilatore gcc patchato per supportare gli AVR, e avrdude per spedire l'HEX al micro usando il programmatore che è disponibile. Il programmatore deve essere tra quelli supportati da avrdude: ad esempio, il mio usbtiny di Adafruit lo è, per cui lo uso da riga di comando tranquillamente. Arduino NON lo è, nel senso che non è supportato dalle versioni "vanilla" di avrdude, tant'è che, come ho detto, nell'IDE viene usata una versione modificata vecchia di quasi 4 anni.
dipende: molti si lamentano della pesantezza dell'IDE. Altri invece semplicemente non amano l'IDE. In teoria potresti scriverti lo sketch con un semplicissimo editor di testo qualsiasi, creare il file compilato e poi spedire lo sketch al micro facendo tutto a mano. Si usa l'IDE perché premi un bottoncino grafico e l'IDE svolge questi compiti per te. Quindi il vantaggio sta tutto qui: avere un processo automatizzato.
scrivi lo sketch, lo salvi e poi lo compili con avr-gcc dandogli i giusti parametri, che puoi vedere premendo lo SHIFT quando clicchi sul pulsantino "Verify" dell'IDE.
Bene, ho salvato il tuo ultimo post, appena sbrigo l'arretrato (mi sa che ho iniziato a fare troppe cose per il tempo che ho, e dire che ne ho proposta un'altra a Uwe, ancora non ho visto se mi ha risposto...) faccio un po' di prove, te le sottopongo, e poi inseriamo...
Grazie, sempre eccellente! Per le royalty ho già dato disponibilità nell'altro topic... XD
avrdude riconosce arduino come programmatore sotto il nome di "avrisp", non come stk500, o in alcune versioni di avrdude anche semplicemente come "arduino"
Grazie leo72!!
Ho fatto passi avanti...
Effettivamente anche con Code::Blocks è possibile flashare Arduino, semplicemente aggiungendo un "tool" dall'appasito menu a tendina nella barra degli strumenti, con questi parametri:
Premetto che io uso linux, quindi "/usr/bin/avrdude" è il percorso sul mio sistema operativo...
La stringa "Parameters" non funziona ancora... credo di aver sbagliato qualcosa...
Ora sono a lavoro, ma appena arrivo a casa provo a sostituire stk200 con stk500!!! XD
@Brain:
ho riprovato con avrdude ultima versione (5.10) e funziona con "arduino" come programmatore, se metto invece "avrisp" non viene riconosciuto come tale.
Secondo me i parametri non ti funzionano perché se usi quei parametri allora c'è qualcosa che non va: hai messo come micro un atmega32 quando dovresti mettere -p m328p per impostare l'Atmega328p dell'Arduino e poi usi stk200 come programmatore ma in realtà l'Arduino lo identifichi come ha ricordato Brain, ossia "arduino".