[EEPROM]Generare file eep

Ho scoperto incredibilmente che anche il bootloader di Arduino supporta l'upload di file eep (o almeno avrdude non restituisce errori in fase di upload) ora ho un progetto compilato che ogni volta carico sfruttando lo stesso avrdude e il bootloader di Arduino. Per aggiornare l'EEPROM però mi affido allo sketch collegato mediante seriale. !uesto mi porta via del tempo in quanto devo avviare un programma di debug che si sincronizzi ed invii i dati, vorrei quindi caricare direttamente un file eep modificato manualmente da PC.
Ora non so come funzioni questo standard, con Google non riesco a trovare nulla se non decine di siti truffaldini che propongono software discutibili per aprire file eep.
Qualcuno potrebbe spiegarmi come creare un file eep valido e se sia possibile generarne uno personalizzato mediante Atmel Studio? In fase di compilazione viene generato un file eep ma non so a partire da cosa.
Grazie

Scrivere , leggere e modificare i file eep e la EEprom degli AVR con AvrStudio è sempre stato semplice, è con il compilatore arduino che è difficile

mhhh intendi nella fase di upload?

Sulla tab "Auto" della finestra di programmazione AVR di AvrStudio ci sono tutte le opzioni Program / Verify / Read EEPROM di cui si ha bisogno, come tutti i programmatori del resto

RobertoBochet:
Ora non so come funzioni questo standard, con Google non riesco a trovare nulla se non decine di siti truffaldini che propongono software discutibili per aprire file eep.

Il file .eep è sempre un file .hex, ha la stessa struttura cambiano solo gli address che sono quelli della EEPROM invece della flash, in pratica è un .hex rinominato .eep per distinguerli.

Quindi indirizzi, dati e relativo checksum. Ok grazie. Ora per generare il file hex uso HxD. Vorrei farne a meno e adoperare Atmel Studio, giusto per eliminare un programma in più. Solo che se apro il file eep con questo il checksum non viene nemmeno ricalcolato in automatico. In più il compilatore genera un file eep ma non capisco sulla base di quali informazioni.
Ho fatto qualche test l'upload e il download del file EEPROM avvengono alla perfezione anche se affidati al bootloader di Arduino.

RobertoBochet:
Ho fatto qualche test l'upload e il download del file EEPROM avvengono alla perfezione anche se affidati al bootloader di Arduino.

Please, come hai fatto ?

nid69ita:
Please, come hai fatto ?

Semplicemente come nome file metti quello del .epp invece di quello del .hex, tutto il resto della riga di comando rimane invariato.
Purtroppo avrgcc non prevede nessun metodo per inizalizzare la EEPROM durante la programmazione, altri compilatori consentono di farlo tramite delle pragma, cosa che farebbe molto comodo per inizializzare la EEPROM al primo avvio.

nid69ita:
Please, come hai fatto ?

-U eeprom:w:"nomefile.eep":a

Identico alla flash, avrdude accetta un secondo paramento di U che indica se andare a modificare EEPROM o FLASH.

Ma come mai allora viene generato questo file eep se non si puo modificare? :frowning:

RobertoBochet:
Ma come mai allora viene generato questo file eep se non si puo modificare? :frowning:

Perché avrgcc non lo prevede.
Un bel addon per l'IDE potrebbe essere un editor per la EEPROM, come quello presente in AVR Studio, che crea il relativo file .epp e un comando per farlo caricare su Arduino, quando necessario, durante la programmazione del micro e/o solo questo su richiesta.
Per dirla tutta non è difficile scrivere un programma per pc che svolge la funzione di editor EEPROM e carica i relativi dati sul 328, o altro processore usato da Arduino, tramite avrdude e/o avrdudedess in modo da non stare a combattere con i vari parametri della riga di comando.
Se mi viene la voglia di farlo lo scrivo io Domenica prossima durante il volo per Boston, ho 10 ore di tempo da impegnare altrimenti mi annoio :slight_smile:

Da ignorantone. Ma lo sketch in Arduino per poi fare questo .eep, cosa ci scrivi ?

astrobeed:
Per dirla tutta non è difficile scrivere un programma per pc che svolge la funzione di editor EEPROM e carica i relativi dati sul 328, o altro processore usato da Arduino, tramite avrdude e/o avrdudedess in modo da non stare a combattere con i vari parametri della riga di comando.

Ma va è una cavolata da fare, ma un editor per hex l'ho trovato, volevo solo rifarmi su Atmel Studio per non avere altri programmi aggiuntivi.

nid69ita:
Da ignorantone. Ma lo sketch in Arduino per poi fare questo .eep, cosa ci scrivi ?

Scusa? Non capisco cosa intendi.

nid69ita:
Da ignorantone. Ma lo sketch in Arduino per poi fare questo .eep, cosa ci scrivi ?

Non esiste lo sketch per Arduino perché avrgcc non permette di inizializzare la EEPROM da codice, serve un editore dedicato che poi genera l'epp.
Oppure potrebbero prevedere una nuova direttiva preprocessore, visto che l'IDE manipola lo sketch prima di darlo in pasto al compilatore, che consente di inserire in un qualche modo i dati di init della EEPROM, però è una cosa che va gestita totalmente da IDE.

astrobeed:
Non esiste lo sketch per Arduino perché avrgcc non permette di inizializzare la EEPROM da codice, serve un editore dedicato che poi genera l'epp.

Ma questo non capisco. @Roberto hai generato il file epp con cosa ?
cosi ? Smart | Connected | Secure | Microchip Technology

nid69ita:
@Roberto hai generato il file epp con cosa ?

L’ha scritto, ha usato HxD.

Non esiste lo sketch per Arduino perché avrgcc non permette di inizializzare la EEPROM da codice, serve un editore dedicato che poi genera l’epp.
Oppure potrebbero prevedere una nuova direttiva preprocessore, visto che l’IDE manipola lo sketch prima di darlo in pasto al compilatore, che consente di inserire in un qualche modo i dati di init della EEPROM, però è una cosa che va gestita totalmente da IDE.

So che lo sai anche tu, quindi intendi dire un’altra cosa che non ho capito.
Io non lo uso mai il tipo EEMEM perché ho gc-sections abilitata che fa pulizia dei simboli non referenziati, però esiste, quindi cosa non ho capito?.

PS: Ho la frebrrrrrreee. :’(

Nota che il file eeprom può anche essere in formato binario, basta comunicarlo ad avrdude.

astrobeed:
L'ha scritto, ha usato HxD.

Ok. Grazie. Sorry ancora... ma quel programma è per scrivere su file.
Scusate se rompo. Faccio nuovo, scrivo i valori che andranno in eeprom, poi salvo il file come .epp oppure si usa esporta ?

MauroTec:
Io non lo uso mai il tipo EEMEM perché ho gc-sections abilitata che fa pulizia dei simboli non referenziati, però esiste, quindi cosa non ho capito?.

Quello che intendo dire è che avrgcc non ha nessun metodo, p.e. tramite delle pragma come si fa con XC8/XC16 di Microchip, per introdurre nel codice una serie di dati che vanno inseriti nella EEPROM quando programmi il chip.
Con EEMEM, o altri sistemi, puoi solo verificare che una certa cella non sia ad un valore prestabilito e di conseguenza scrivere, a run time, sulla EEPROM l'inizializzazione.
Al successivo riavvio del micro la cella avrà il valore prestabilito e la EEPROM non viene reinizializzata.

nid69ita:
Ok. Grazie. Sorry ancora... ma quel programma è per scrivere su file.
Scusate se rompo. Faccio nuovo, scrivo i valori che andranno in eeprom, poi salvo il file come .epp oppure si usa esporta ?

Vado a memoria, dovrebbe essere possibile nominare il file come si vuole, anche pippo.txt.