fuse+eep+hex : magia del .elf

Apro questo topic per parlare di una possibilita’ da pochi conosciuti,

Sui micro Atmel e’ possibile usare quello che viene chiamato File di Produzione, un file .elf che ingloba fuse, eeprom, flash in un unico file. In questo modo non c’e’ pericolo ad esempio di sbagliare i fuse, ne’ tantomeno di dover fare piu’ manovre per caricare un micro.

Interessante notare anche che sulla serie Xmega e’ possibile inglobare nel .elf anche la Signature

In fase di produzione poter fare un unico upload di un unico file non solo velocizza ma rende piu’ affidabile il tutto.

Io uso ormai da tempo solo file .elf con AtmelStudio, chi ha un attimo di voglia in piu’ ed interesse potrebbe approfondire il discorso per avrdude, ho letto che l’autore ci stava lavorando al supporto ma non ho approfondito.

Scusa Test, la cosa mi sembra estremamente interessante ma non mi è per niente chiara :disappointed_relieved: Domanda: ho un micro, devo settare una particolare combinazione di fuse, li metto in AVRDUDE ed inverto H e L, magari creando una combinazione che bricka il micro; spiegami in che modo risolvo la cosa con questo elf

Testato:
Sui micro Atmel e' possibile usare quello che viene chiamato File di Produzione, un file .elf che ingloba fuse, eeprom, flash in un unico file.

Non è proprio così, il formato elf ('Executable and Linkable Format) permette di ottenere dei file che sono sia eseguibili che linkabili, ovvero possono essere anche dei file oggetto di libreria, è Atmel Studio che ti permette di usare questi file anche per la programmazione, ma non è il loro utilizzo primario.
Il classico file .hex può contenere sia la eeprom e i fuse, oltre alla flash, dipende solo da come vengono generati, è l'IDE di Arduino che è abbastanza carente sotto questo punto di visto, p.e. non prevede il preinit della EEPROM da sketch, cosa che si fa normalmente in altri ambienti di lavoro utilizzando delle apposite #pragma, o altra keyword, nel sorgente.

In nessun modo, se li metti sbagliati il danno è fatto, il vantaggio è solo nel fatto di avere un file unico che contiene la flash, la eeprom e i fuse, però si fa anche con gli .hex.

e allora me ne resto con l'avrdudess che è la stessa cosa, per quanto mi serve, in un'unica operazione carico il firmware e setto i fuse e i lock bit, senza dover fare il kamasutra con l'IDE :grin:

Il software che usi per programmare è molto relativo, deve solo supportare i comandi per accedere alle porzioni protette della memoria interna dei micro, e avrdude lo fa.
Quello che cambia è solo avere un singolo file che contiene tutto, non devi impostare nulla su avrdudess, che ti evita possibili errori in fase di programmazione, però se il file viene generato sbagliato il risultato finale è sempre catastrofico.
Il problema è che l'IDE di Arduino non prevede le estensioni per inserire i fuse e la eeprom nello sketch.

Esatto mike, come vedi ho preso spunto per parlare del production file (nome scelto da Atmel) rispondendo al topic sul tuo frequenzimetro, immagina di poter dare un unico file alla persona che ti ha chiesto info, senza doverti raccomandare di stare attento a questo fuse a all'altro, senza allarmarlo sul posdibile brick.

È una possibilità, comodissima, allegare un unico singolo file, otyima idea di Atmel.
Il file .elf viene da lontano, in esso ad esempio vi sono i dati per eventuali debug. Il .hex stesso nasce dal .elf, non il contrario.

Astro hai info certe sul supporto in avrdude ?

Sì ma dovrei dire ai lettori di installare ATMEL STUDIO :astonished: faccio molto prima ad aggiungere uno screen shot di avrdudess con tutte le impostazioni. Sarebbe stato bello se il file fosse stato supportato dall'IDE mentre penso basti dare uno sguardo al manuale di avrdude 6.1 per vedere se supporta l'elf.

Testato:
È una possibilità, comodissima, allegare un unico singolo file, otyima idea di Atmel.

Non è un'idea di Atmel, lo fanno tutti gli ambienti di sviluppo per tutti i micro, è solo questione di come setti i vari parametri di creazione del progetto, che poi creano un .hex con dentro tutto, oppure un .bin o usano direttamente l'elf è solo una scelta di di chi ha realizzato l'ambiente di sviluppo.
P.e. in MPLABX (Microchip) viene generato l'hex con dentro tutto e viene usato questo anche per la produzione, il file elf, assieme a un file .map, viene usato per il debug hardware.

Il file .elf viene da lontano, in esso ad esempio vi sono i dati per eventuali debug. Il .hex stesso nasce dal .elf, non il contrario.

Sbagliato, .elf e .hex sono generati assieme partendo dai file .o (oggetti) e li crea il linker.

Astro hai info certe sul supporto in avrdude ?

Di cosa ? Se ti riferisci al fatto che può programmare EEPROM e FLASH partendo da un singolo file si visto che si tratta solo di porre le informazioni nei giusti registri della memoria, dove sono lo sa dal suo file di configurazione.
Ho solo un dubbio sul fatto che avrdude sia in grado di programmare i fuse partendo dal file .hex invece di trovarli dichiarati nella riga di comando, Atmel Studio lo fa senza problemi in quanto non usa avrdude.
Sarebbe da fare un prova generando da Atmel Studio un .hex completo di tutto, flash + eeprom + fuse, e darlo in pasto ad avrdude per vedere cosa combina, prova da fare solo se si possiede il programmatore HV in quanto in caso di casini il micro rischia il brick :slight_smile:

No, basta fornire il solo .hex finale, completo di tutto, per programmare il micro, poi se loro vogliono giocare con il sorgente per farsi delle modifiche allora seguono la trafila standard :slight_smile:

Astro ti ha morso una tarantola ? :stuck_out_tongue_closed_eyes:

Calma, se non vuoi usarlo il .elf non usarlo, io sto' gentilmente mettendo al corrente di cose interessanti il forum, mi sa che sono cose abbastanza nuove anche per te visto che non ne hai mai parlato.

La Atmel ha deciso di usare il .elf nel modo in cui io l'ho spiegato, e' l'ho fatto in modo semplice e lineare, che poi il .elf esiste dalla notte dei tempi ed e' usato in ambito linux da sempre e' altro discorso che poco c'entra col mio topic.
Non riesci nemmeno a capire le domande, se ti ho chiesto se avevi info certe sul supporto da parte di avrdude del .elf e' perche' io non ne ho trovate, e rispetto le tue competenze chiedendo a te.
Avere il .elf gestito direttamente da Avrdude sarebbe la risposta ad esempio a Michele, che di certo non vuole installare roba che occupa Giga di memoria per caricare un misero file di 1K su un micro.

Passo :stuck_out_tongue_closed_eyes:

Test parli in modo pericoloso. ....
Comunque rispondo ad Astro: nel caso specifico ho messo a punto la taratura del frequenzimetro via trimmer che prevede la memorizzazione di una costante e la disattivazione successiva della procedura di taratura. Quindi la prima volta l'utente deve mettere mano al sorgente per fare queste due semplici operazioni. Quindi in questo caso non avrei comunque potuto usarlo l'elf

Testato:
Calma, se non vuoi usarlo il .elf non usarlo, io sto' gentilmente mettendo al corrente di cose interessanti il forum, mi sa che sono cose abbastanza nuove anche per te visto che non ne hai mai parlato.

Non ci siamo capiti, il file .elf non è quello che tu dici, ho solo spiegato la realtà delle cose, che poi Atmel, arbitrariamente, lo chiama file di produzione è un altro paio di maniche, e comunque il produzione si va solo con i file .hex anche in ambiente Atmel, e questo te lo dice uno che ha un "minimo" di esperienza su come si arriva alla produzione di una scheda :slight_smile:
Per me non sono cose nuove, sono cose che conosco dalla notte dei tempi visto che è qualche decennio che programmo micro :slight_smile:

Non riesci nemmeno a capire le domande, se ti ho chiesto se avevi info certe sul supporto da parte di avrdude del .elf e' perche' io non ne ho trovate, e rispetto le tue competenze chiedendo a te.

Se poni le domande in modo sibillino è difficile capirle, non lo so se Avrdude supporta gli .elf, credo di no perché è inutile in quanto contengono tutta una serie di informazioni che non servono ai fini della programmazione finale del micro.

Avere il .elf gestito direttamente da Avrdude sarebbe la risposta ad esempio a Michele, che di certo non vuole installare roba che occupa Giga di memoria per caricare un misero file di 1K su un micro.

Scusa, cosa non ti è chiaro del concetto che il file .hex può contenere tutto, ovvero flash+eeprom+fuse ?
Ovvero ad avrdude dai in pasto il .hex complessivo e con una sola operazione programmi tutto, fuse inclusi (da verificare se avrdude può gestire i fuse da .hex)
Atmel Studio genera sia l'elf che l'hex, cosa contiene l'hex lo decidi dai parametri del progetto, puoi anche scegliere di avere due hex distinti, opzione di default, uno per la flash e uno per la eeprom, tipicamente .eep però è sempre un hex come formato, che crei tramite l'apposito editor per la eeprom integrato in Atmel Studio.

Concordo con quanto dici, anche se sarebbe possibile fornire i due sorgenti precompilati da caricare via ISP, però capisco perfettamente che questo è un discorso puramente accademico e che al lato pratico di difficile applicazione per l'utente comune di Arduino.

x iscrizione :cold_sweat:

astrobeed:

Testato:
Calma, se non vuoi usarlo il .elf non usarlo, io sto' gentilmente mettendo al corrente di cose interessanti il forum, mi sa che sono cose abbastanza nuove anche per te visto che non ne hai mai parlato.

Non ci siamo capiti, il file .elf non è quello che tu dici, ho solo spiegato la realtà delle cose, che poi Atmel, arbitrariamente, lo chiama file di produzione è un altro paio di maniche,

e' proprio questo il punto, se tu hai cose contro la Atmel prenditela con lei, se ti da fastidio come Atmel intende il .elf prenditela con lei, se vuoi fare prove sull'uso del .hex al fine di creare un file di produzione che contiene tutto, falle, cioe' fai quello che vuoi, ma non venire ad attaccare me che ho spiegato semplicemente ed in poche parole, quale e' il metodo scelto ufficialmente da Atmel per creare un File di Produzione.

Testato:
e’ proprio questo il punto, se tu hai cose contro la Atmel prenditela con lei, s

Come al solito interpreti le cose a modo tuo, anche quando cozzano contro la realtà dei fatti, chiedi a chi vuoi se in produzione si va con i file .elf, che per giunta sono facilmente reversibili nel sorgente originale se la compilazione usa l’opzione debug, oppure con i file .hex o .bin a seconda del tipo di micro e/o ambiente di lavoro.
Ti stai incaponendo su una cosa che è concettualmente sbagliata, Atmel Studio genera sia l’elf, ma lo fanno tutti gli ambienti di lavoro per micro, che l’hex ed è questo che dai in pasto a programmi esterni ad Atmel Studio per la programmazione finale, o consegni al service per preprogrammare il micro, se gli dai l’elf non te lo accetta nessuno.
Che poi Atmel Studio, al suo interno, usa il file .elf per programmare il micro è un altro paio di maniche che non nulla a che vedere con il reale processo di produzione.
Per quanto riguarda avrdude e gli .elf bastava fare una ricerca con google, pare che li accetta, esempio di riga di comando con elf.

 avrdude -cdragon_jtag -pusb647 -Pusb -F -e -Uflash:w:i2c.elf

mi sa che ho colpito qualche punto debole :slight_smile:

  • ho allegato una schermata ufficiale Atmel dove la Atmel stessa ha deciso di chiamarla File di Produzione: vattela a vedere nel primo topic
  • Ci sono video degli ingegneri Atmel che spiegano che il .elf e' la loro scelta di file di produzione: vatteli a vedere
  • Ho correttamente scritto due righe in merito visto che non se ne e' parlato mai nella community, queste mi sembra che le hai viste :stuck_out_tongue_closed_eyes:

Pecrhe' non vuoi accettare che Atmel ha fatto questa scelta ? Io che centro ? Nel mio primo messaggio sono stato il piu' gentile, conciso, chiaro possibile, allegando anche uno Screenshot.

La prossima volta che posto qualcosa a beneficio di tutti, ed a te per qualche motivo ti da fastidio, non scrivere nel topic

L'hai provata la riga che hai messo ? quando ho provato con avrdudess ad usare un .elf non me lo ha accettato.
Riprovo magari e' cambiato qualcosa.
Questo sarebbe molto utile, come ho detto prima

Testato:
mi sa che ho colpito qualche punto debole :slight_smile:

Ma assolutamente no, te lo ripeto prova a mandare ad un service il file .elf per programmare i micro e poi dimmi se lo accettano oppure te lo contestano, io ti dico che è la seconda.

Pecrhe' non vuoi accettare che Atmel ha fatto questa scelta ? Io che centro ? Nel mio primo messaggio sono stato il piu' gentile, conciso, chiaro possibile, allegando anche uno Screenshot.

Sei tu che continui ad interpretare quello che scrivo a modo tuo, io non contesto cosa fa Atmel all'interno di Atmel Studio, ogni sistema di sviluppo lavora a modo suo e usa scelte fatte da chi lo ha realizzato, e ti garantisco che questo è un gran casino per chi, come me, usa vari ambienti di sviluppo.
Però al di fuori di Atmel Studio esistono delle regole standard, valide per tutti, su come si deve lavorare e il file di produzione è il .hex o .bin, salvo alcuni casi particolari dove viene usato un file binario proprietario, prova a dare in pasto ad un gang programmer di produzione il file .elf e senti che bella pernacchia ti fa :slight_smile:

Testato:

  • Ho correttamente scritto due righe in merito visto che non se ne e' parlato mai nella community,

Dimenticavo, non se ne parla perché il mondo di Arduino non usa il .elf, usa l'hex per la programmazione, e chi usa Arduino non usa Atmel Studio.