Dopo una recente perdita di dati a causa della dipartita dell'hard disk del mio computer, ho perso irrimediabilmente alcuni sketch. Per fortuna ho ancora un Arduino contenente il codice di uno di questi sketch e mi chiedevo se fosse possibile "riesumarlo".
Ho letto da qualche parte che dall'ATmega è possibile estrarre l'hex che poi è possibile convertire a sua volta in assembly il che, se ho capito bene, è il linguaggio a basso livello.
Non c'è modo per riportare il codice allo stato di sketch oppure a qualche cosa di comprensibile?
NO, purtroppo l'unica cosa che puoi fare è estrarre il codice macchina e ... sperare di riuscire ad ottenere un disassemblato ... considerando che, ad incasinare il tutto, c'è di mezzo anche l'ottimizzazione che può aver fatto sul codice il compilatore.
Direi che ... NON è una strada percorribile ... mi spiace ... :~
Dopo una recente perdita di dati a causa della dipartita dell'hard disk del mio computer, ho perso irrimediabilmente alcuni sketch. Per fortuna ho ancora un Arduino contenente il codice di uno di questi sketch e mi chiedevo se fosse possibile "riesumarlo".
Attiva un account dropbox e sincronizza la cartella contenente i tuoi sketch, a pro futuro
Ho letto da qualche parte che dall'ATmega è possibile estrarre l'hex che poi è possibile convertire a sua volta in assembly il che, se ho capito bene, è il linguaggio a basso livello.
Corretto.
Non c'è modo per riportare il codice allo stato di sketch oppure a qualche cosa di comprensibile?
Come ti ha detto Guglielmo.... no! =(
Purtroppo il tuo sketch arduinico è perso per sempre. Se il programma era importante, non ti resta che estrarre appunto il firmware e da quello, con un disassemblatore, recuperare almeno il programma assembly. Ma se non conosci quel linguaggio, te ne farai ben poco.
Se volessi dare un'occhiata al file HEX relativo ad un mio programma, dove lo trovo?
Dovrei per forza estrarlo dopo la scrittura o lo posso avere in locale?
paulus1969:
Se volessi dare un'occhiata al file HEX relativo ad un mio programma, dove lo trovo?
Dovrei per forza estrarlo dopo la scrittura o lo posso avere in locale?
Ce l'hai anche in locale.
A seconda del SO, l'IDE crea una cartella temporanea in cui mette tutto quello che riguarda lo sketch, dalle lib ai file oggetto e per finire anche l'hex finale.
Per sapere dove hai questo file, dalle preferenze dell'IDE attiva la compilazione verbosa e poi compila, nei messaggi iniziali che vedrai sul terminale dell'IDE c'è anche il percorso di questo file.
killrob:
per sicurezza io i miei sketch importanti e di lavoro li copio tutti sul google drive e su chiavette usb... meglio "ridondare" quam deficere
Anch'io, ho un utente su Dropbox apposta, poi ho la Timemachine del Mac che mi fa i backup in automatico. Ed infine ho un HD esterno come cloud domestico su cui riverso periodicamente un archivio della cartella
Sto provando a disassemblare uno sketch usando il programma avr-objdump.exe, ma da quel che ho capito richiede il file .elf e non il .hex. Se dall'ATmega recupero l'hex, cosa mi serve disassemblare l'elf?
Probabilmente perché il tool che hai usato tu supporta solo .elf.
Tempo fa su Linux usai vavrdisasm, che supporta anche i file .hex
Non so su Windows cosa potresti usare.... :~
leo72:
Googlando ho letto che invece dovrebbe poterlo fare. Prova con qualcosa di simile, adattandolo al tuo caso:
Se invece di perdere tempo con Google avessi fatto avr-objdump -H ... ] ] ]
... avresti avuto un bel help, da cui avresti scoperto che con avr-objdump -i ... ti da i formati supportati, tra cui anche l'hex
Che il compilatore c'abbia messo le mani.... è certo!
Tutti i firmware sono compilati di default per ottimizzare la dimensione finale, quindi... apriti cielo...
gpb01:
Se invece di perdere tempo con Google avessi fatto avr-objdump -H ... ] ] ]
Mea culpa, mea MAXIMA culpa.... =( =(
ps:
ho le attenuanti.. sono sulla carretta windows di lavoro e qui manco so da che parte si mettono le mani per aprire un terminale, non mi fare bestemmiare dai