Pages: 1 ... 6 7 [8] 9 10 ... 21   Go Down
Author Topic: Strano problema con signature scrivendo il bootloader  (Read 13856 times)
0 Members and 1 Guest are viewing this topic.
Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 129
Posts: 9439
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@ 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:

Code:
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 Offline
Tesla Member
***
Karma: 129
Posts: 9439
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 Offline
God Member
*****
Karma: 14
Posts: 917
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset


Tra le prime cose dette in questo lungo thread c'è pure questa modifica a boards.txt:

Code:
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 Offline
Tesla Member
***
Karma: 129
Posts: 9439
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 Offline
God Member
*****
Karma: 14
Posts: 917
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 328
Posts: 22738
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 Offline
Full Member
***
Karma: 0
Posts: 132
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

quindi fatemi capire, arduino IDE quando fai il burn ricompila il bootloader ogni volta?
 smiley-kiss
Logged

~blackout~ @ grayhats.org

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 129
Posts: 9439
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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  smiley-mr-green
Logged

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 129
Posts: 9439
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 Offline
Full Member
***
Karma: 0
Posts: 132
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 328
Posts: 22738
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

ho capito
quindi avrdude.conf serve solo per compilare l'HEX dello sketch
No.
Cosa ho scritto?
Quote
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?
Quote
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 Offline
Full Member
***
Karma: 0
Posts: 132
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

quindi arduino compila di volta in volta il bootloader quando usi l'opzione BURN

we non è che mi dovete fare impazzire smiley-grin uno dice si uno dice no ... a chi devo credere?  smiley-mr-green
Logged

~blackout~ @ grayhats.org

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 328
Posts: 22738
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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  smiley-wink
Logged


0
Offline Offline
Full Member
***
Karma: 0
Posts: 132
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 Offline
Tesla Member
***
Karma: 129
Posts: 9439
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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  smiley-grin
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.

Quote
come si compila il bootloader?

Utilizzando la sua make oppure da AVRStudio, quest'ultima richiede padronanza di AVRstudio e le sue toolchain.

Quote
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

Pages: 1 ... 6 7 [8] 9 10 ... 21   Go Up
Jump to: