Rome (Italy)
Offline
Tesla Member
Karma: 74
Posts: 7342
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
|
 |
« Reply #105 on: October 17, 2011, 10:05:18 am » |
@ Astrobeed: in avrdude.conf non si è fatto altro che copiare la sezione del 328P e rinominarla 328, modificando esclusivamente la signature; questo trucchetto ha fatto sì che nella board virtuale si potesse mettere il 328 come micro e mandare regolarmente il bootloader.
Tra le prime cose dette in questo lungo thread c'è pure questa modifica a boards.txt: e modificando la copia facendola diventare
##############################################################
atmega328pu.name=Atmega328PU su shield atmega328pu.upload.protocol=stk500 atmega328pu.upload.maximum_size=32256 atmega328pu.upload.speed=115200 atmega328pu.bootloader.low_fuses=0xff atmega328pu.bootloader.high_fuses=0xde atmega328pu.bootloader.extended_fuses=0x05 atmega328pu.bootloader.path=optiboot atmega328pu.bootloader.file=optiboot_atmega328.hex atmega328pu.bootloader.unlock_bits=0x3F atmega328pu.bootloader.lock_bits=0x0F atmega328pu.build.mcu=atmega328pu atmega328pu.build.f_cpu=16000000L atmega328pu.build.core=arduino
Dove viene chiaramente inserito come micro il 328pu al posto del 328p, infatti se andate a vedere le varie opzioni di compilazione per gcc scoprirete che gli viene detto di compilare per il 328 e non per il 328p.
|
|
|
|
|
Logged
|
|
|
|
|
Rome (Italy)
Offline
Tesla Member
Karma: 74
Posts: 7342
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
|
 |
« Reply #106 on: October 17, 2011, 10:16:04 am » |
ALT !!! STOP !!! Questo non è esatto , io ho utilizzato la entry modificata solo per caricare il bootloader, da quel momento in poi utilizzo le stesse impostazioni dell'arduino uno.
Se stai compilando per la UNO non è possibile che riesci a caricare lo sketch perché la signature attesa è diversa da quella del 328, poi se hai fatto pasticci nel file boards.txt e/o avrdude.conf per forzare il caricamento hai commesso un errore procedurale. Comunque mi sono stufato di ripetere le stesse cose 1000 volte, io vi ho spiegato come stanno le cose e come vanno fatte nel corretto modo, poi se volete farle nel modo sbagliato solo perché vi sembra che così funziona è una vostra scelta, però poi non venite a lamentarvi domani quando Arduino vi si pianterà in modo misterioso. Se non è ancora chiaro lo dico per l'ultima volta, il core del 328 è diverso dal core del 328p, non è possibile compilare per il 328p e sperare che poi funzioni tutto perfettamente sempre e comunque forzando il caricamento sul 328.
|
|
|
|
|
Logged
|
|
|
|
|
MC
Offline
God Member
Karma: 9
Posts: 670
|
 |
« Reply #107 on: October 17, 2011, 10:32:42 am » |
Tra le prime cose dette in questo lungo thread c'è pure questa modifica a boards.txt: e modificando la copia facendola diventare
##############################################################
etc etc etc atmega328pu.build.mcu=atmega328pu etc etc
Dove viene chiaramente inserito come micro il 328pu al posto del 328p.... Che è una entry che io ho aggiunto ad avrdude.conf , perchè di suo non c'era, che contiene lo stesso identico blocco del 328p ad esclusione della signature. Per tutto il resto, bhe sarà stato culo, se in teoria non è possibile, bhe pazienza! Grazie a tutti.
|
|
|
|
|
Logged
|
Vi è una spiegazione scientifica a tutto. La fede è solo quell'anello che si porta al dito dopo il matrimonio.
|
|
|
|
Rome (Italy)
Offline
Tesla Member
Karma: 74
Posts: 7342
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
|
 |
« Reply #108 on: October 17, 2011, 10:40:07 am » |
Che è una entry che io ho aggiunto ad avrdude.conf , perchè di suo non c'era, che contiene lo stesso identico blocco del 328p ad esclusione della signature.
No, il pezzo che ho riportato, e l'hai scritto tu, è relativo al file boards.txt che, vai a rivedere la prima pagina di questo thread e tra i primissimi post c'è il tuo dal quale ho tratto la modifica.
|
|
|
|
|
Logged
|
|
|
|
|
MC
Offline
God Member
Karma: 9
Posts: 670
|
 |
« Reply #109 on: October 17, 2011, 10:51:50 am » |
Esattamente, ma se vedi bene l'unica riga che ho lasciato, tra gli etc, è quella che indica all'ide la entry da far utilizzare ad avrdude. Se tu crei quella entry su board.txt e non crei poi la entry per il 328pu anche su avrdude.conf , non funziona una beata ...... La entry creata poi in avrdude.conf è IDENTICA a quella del 328p, eccetto per la signature.
Ma comunque, come ho già detto prima, per me la cosa è chiara.
|
|
|
|
|
Logged
|
Vi è una spiegazione scientifica a tutto. La fede è solo quell'anello che si porta al dito dopo il matrimonio.
|
|
|
|
Forum Moderator
Italy
Offline
Brattain Member
Karma: 219
Posts: 16431
Don't know what I do
|
 |
« Reply #110 on: October 17, 2011, 10:54:56 am » |
Scusa una cosa, fai un po' di casino sui ruoli che hanno quei 2 file. avrdude.conf NON interviene sulla compilazione dello sketch ma dà solo istruzioni ad avrdude su come "comunicare" con il micro per trasmettere il firmware.
Ciò che viene usato per la compilazione sono proprio le informazioni contenute in boards.txt. Sono questi dati che l'IDE passa a gcc-avr per far compilare lo sketch. Se gli passa "328" invece che "328p" gcc-avr compilerà per 328 non P, con le conseguenze dette da Astro se poi quel firmware lo usi su un 328p o viceversa. Ad avrdude puoi anche dirgli quello che vuoi, se gli dai delle signature false. Ma il problema è a monte di avrdude.
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Full Member
Karma: 0
Posts: 132
Arduino rocks
|
 |
« Reply #111 on: October 17, 2011, 10:57:56 am » |
quindi fatemi capire, arduino IDE quando fai il burn ricompila il bootloader ogni volta? 
|
|
|
|
|
Logged
|
~blackout~ @ grayhats.org
|
|
|
|
Rome (Italy)
Offline
Tesla Member
Karma: 74
Posts: 7342
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
|
 |
« Reply #112 on: October 17, 2011, 10:58:54 am » |
Ad avrdude puoi anche dirgli quello che vuoi, se gli dai delle signature false. Ma il problema è a monte di avrdude.
Esatto, il signore vince un pinguino gonfiabile 
|
|
|
|
|
Logged
|
|
|
|
|
Rome (Italy)
Offline
Tesla Member
Karma: 74
Posts: 7342
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
|
 |
« Reply #113 on: October 17, 2011, 11:05:36 am » |
quindi fatemi capire, arduino IDE quando fai il burn ricompila il bootloader ogni volta?
No, compila solo lo sketch utilizzando le informazioni in boards.txt per sapere il clock, il modello di micro etc, poi invoca avrdude dicendogli dove prendere l'hex da caricare, il modello del micro e altri parametri. Avrdude prima cerca in avrdude.conf i parametri di programmazione del micro, tra cui la signature, dopo di che cerca di entrare in contatto con un programmatore stk500 che è emulato dal bootloader e se questa fase ha successo inizia la vera e propria procedura di programmazione. Manipolando avrdude.conf, e/o i parametri di risposta della emulazione stk500, possiamo far credere ad avrdude quello che vogliamo, ovvero forzare la programmazione di un programma compilato per il micro pincopallo sul micro pallopinco, però questo non significa necessariamente che poi il micro funzioni in modo corretto.
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Full Member
Karma: 0
Posts: 132
Arduino rocks
|
 |
« Reply #114 on: October 17, 2011, 11:12:29 am » |
ho capito quindi avrdude.conf serve solo per compilare l'HEX dello sketch mentre boards.txt serve x sapere quali signature e configurazioni per il caricamento del bootloader
torniamo al punto cruciale come si compila il bootloader? ha una procedura simile a quella delle cpu sigma,enigma e famiglia? devo prepararmi una toolchain come si fa per l'n800? dove reperisco le informazioni?
|
|
|
|
|
Logged
|
~blackout~ @ grayhats.org
|
|
|
|
Forum Moderator
Italy
Offline
Brattain Member
Karma: 219
Posts: 16431
Don't know what I do
|
 |
« Reply #115 on: October 17, 2011, 11:15:02 am » |
ho capito quindi avrdude.conf serve solo per compilare l'HEX dello sketch
No. Cosa ho scritto? avrdude.conf NON interviene sulla compilazione dello sketch ma dà solo istruzioni ad avrdude su come "comunicare" con il micro per trasmettere il firmware. Per "trasmettere il firmware", non per "compilare il firmware". Chi compila? Ciò che viene usato per la compilazione sono proprio le informazioni contenute in boards.txt. Sono questi dati che l'IDE passa a gcc-avr per far compilare lo sketch.
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Full Member
Karma: 0
Posts: 132
Arduino rocks
|
 |
« Reply #116 on: October 17, 2011, 11:16:26 am » |
quindi arduino compila di volta in volta il bootloader quando usi l'opzione BURN we non è che mi dovete fare impazzire  uno dice si uno dice no ... a chi devo credere? 
|
|
|
|
|
Logged
|
~blackout~ @ grayhats.org
|
|
|
|
Forum Moderator
Italy
Offline
Brattain Member
Karma: 219
Posts: 16431
Don't know what I do
|
 |
« Reply #117 on: October 17, 2011, 11:24:16 am » |
A tutt'e due, stiamo parlando di cose diverse. avrdude.conf non interviene nella compilazione, quel file è solo una specie di agenda del telefono dove ci sono i numeri per chiamare i tuoi amici. Mettiamo che vuoi dire ad Andrea che stasera vuoi uscire per andare a trovare Marco. Pensi un attimo a cosa vuoi dirgli, poi fai il numero e lo chiami. Ecco, gcc-avr è il tuo cervello che pensa quello che devi dire e crea il concetto da esprimere (il file .hex), avrdude.conf è quello che fornire il numero (signature) per chiamare Marco (il micro di destinazione) e tu sei quello che parla (avrdude). Se ora cambi il discorso da fare, cose gliene frega ad avrdude.conf? E cose gliene frega ad avrdude? Se magari volevi mandare un bacio alla tua donna e chiami Marco e prima che questo parli gli dici "ti amo"?? gcc-avr e avrdude hanno svolto il loro compito ma tu (avrdude) hai fatto casino prendendo un numero sbagliato e passando un concetto giusto al destinatario sbagliato. PS: per la cronaca, agli occhi di Marco passi da "buco", e chi è stato in Toscana sa cosa vuol dire 
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Full Member
Karma: 0
Posts: 132
Arduino rocks
|
 |
« Reply #118 on: October 17, 2011, 11:27:53 am » |
capito claro
mentre boards.txt interviene nella compilazione del bootloader che viene ricompilato ogni volta viene effettuato un burn
@astro @leo
grazie per la spiegazione, purtroppo in questo settore sono ignurante quindi mettendo 328 senza P praticamente ho azzeccato (a culo) il flag che indica a gcc-avr il micro 328 senza P
|
|
|
|
|
Logged
|
~blackout~ @ grayhats.org
|
|
|
|
Rome (Italy)
Offline
Tesla Member
Karma: 74
Posts: 7342
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
|
 |
« Reply #119 on: October 17, 2011, 11:32:34 am » |
ho capito quindi avrdude.conf serve solo per compilare l'HEX dello sketch mentre boards.txt serve x sapere quali signature e configurazioni per il caricamento del bootloader
Si, hai capito esattamente l'opposto  Boards.txt contiene informazioni che definiscono il modello di Arduino, il micro utilizzato, il clock, i fuse, viene usato esclusivamente dall'IDE, alcune informazioni sono poi trasmesse, dall'IDE, a gcc per la compilazione e avrdude per la programmazione. Avrdude.conf contiene informazioni solo sul micro ed utili esclusivamente alla sua programmazione, viene usato esclusivamente da avrdude. come si compila il bootloader?
Utilizzando la sua make oppure da AVRStudio, quest'ultima richiede padronanza di AVRstudio e le sue toolchain. devo prepararmi una toolchain come si fa per l'n800?
La toolchain è inclusa nell'IDE di Arduino, hai a disposizione avrgcc e la libreria avrlibc che sono utilizzati per compilare gli hex per Arduino, in alternativa puoi usare AVRstudio e relativi addon/toolchain.
|
|
|
|
|
Logged
|
|
|
|
|
|