Importare da ATMEGA 238

Hola a tutti

Sono un novizzio di arduino e con avvanzata eta'!!!

Mi sono posto un problema! con l'interfaccia IDE si puo digitare e compilare un programma e poi trasferlo, ma se io avessi bisogno di fare l'opposto? ossia leggere un atmega238 e il suo contenuto trasferiolo sulla interffacci IDE e poterlo salvare e modificare!

Si puo' e come?

Grazie a tutti di ogni risposta.......!!!!!

No non puoi, l'unica cosa che puoi fare, forse, è ricavare l'assembler generato dall'ide e caricato nel chip.
Ma ci vogliono strumenti particolari.

Hola Erpomata

Ma si puo' leggere la rom interna dell'atmega238 con IDE , perche' io non vedo il file binario che genera IDE o se lo genera dove lo trovo?

se queste cose non si possono fare e abbastanza limitato IDE, bisognora trovare un'altra alternativa e cosa eventualmente?

Grazie 8)

bazzo54:
ma se io avessi bisogno di fare l'opposto? ossia leggere un atmega238 e il suo contenuto trasferiolo sulla interffacci IDE e poterlo salvare e modificare!

Non si può fare, dentro l'Atmega non c'è lo sketch, c'è il file binario prodotto dal compilatore.
Al massimo puoi leggere la flash, si fa anche tramite AvrDude, e ottenere il relativo file .hex, ma da questo non puoi ottenere lo sketch, puoi avere solo il listato assembly senza nessun riferimento e nomi di variabili.

nota:ATMEGA 238 è nuovo? :grin:

Madwriter:
nota:ATMEGA 238 è nuovo? :grin:

Si è il nuovissimo Atmega 328-90 :slight_smile:

bazzo54:
Hola Erpomata

Ma si puo' leggere la rom interna dell'atmega238 con IDE , perche' io non vedo il file binario che genera IDE o se lo genera dove lo trovo?

se queste cose non si possono fare e abbastanza limitato IDE, bisognora trovare un'altra alternativa e cosa eventualmente?

Grazie 8)

Le limitazioni sono altre semmai. L'obbiettivo primario dell'ide è quello di fornire all'utente un modo per scrivere il codice sorgente, compilarlo e trasferirlo nella memoria flash del microcontroller. Leggere il codice presente in flash non ha alcuna utilità se non quella di recuperare un codice sorgente che hai precedentemente trasferito nella flash e che accidentalmente hai cancellato dal PC.

Tutti i file generati durante il processo di build si trovano in una directory temporanea, il percorso di questa dipende dal sistema operativo, posso dirti che su GNU/Linux si trova sotto /tmp/dir_temporanea. Cerca sotto /tmp qualcosa che abbia a che fare con arduino, il nome della dir è sempre diverso ma ci dovrebbe essere un prefisso inequivocabile o forse no non ricordo.
Li dentro ci trovi il file .hex in formato intel hex, ci trovi il file binario ".elf" ecc.

Ciao.

Ci dovrebbe essere nell proprietà dell'ide qualcosa da impostare per fare una compilazione "verbosa".

In questo modo, alla fine della compilazione, viene anche detto quale file è stato generato e dove.

MauroTec:
Leggere il codice presente in flash non ha alcuna utilità se non quella di recuperare un codice sorgente che hai precedentemente trasferito nella flash

Nella flash non hai nessun sorgente, hai solo l'eseguibile in codice macchina in formato binario.

bazzo54:
Hola Erpomata

Ma si puo' leggere la rom interna dell'atmega238 con IDE , perche' io non vedo il file binario che genera IDE o se lo genera dove lo trovo?

Il binario generato dall'IDE prima dell'upload viene salvato in una cartella temporanea. Se vuoi vedere quale e dove è (cambia in base al SO utilizzato) abilita i messaggi durante la compilazione attraverso File/Preferenze.

In ogni caso quel file binario è in linguaggio macchina. Non te ne fai nulla.
Per gli "umani" il file di riferimento è quello del sorgente dello sketch.

se queste cose non si possono fare e abbastanza limitato IDE, bisognora trovare un'altra alternativa e cosa eventualmente?

Il concetto applicato ai PC non è diverso: da un file compilato non puoi ricavare un sorgente intellegibile.

Se perdi i sorgenti di un programma, sei nell'acqua motosa sia programmando i microcontrollori che programmando i computer :wink:

Hola a tutti

E doveroso dire grazie a tutte le risposte che mi avete dato in merito!

Se usassi un compilatore diverso in quale formato dovrei usare per poterlo poi trasferire sulla IDE e programmare il 328 ( erroneamente avevo scritto 238 )

Grazie

bazzo54:
Se usassi un compilatore diverso in quale formato dovrei usare per poterlo poi trasferire sulla IDE e programmare il 328

Un IDE è un ambiente di sviluppo, esso serve a scrivere il sorgente di un programma.
Una volta scritto e salvato il file, è il compilatore che si prende la briga di trasformare il sorgente in linguaggio macchina. Il compito dell'IDE termina lì.
Quindi, l'IDE non può aprire file binari, può solo aprire sorgenti. Il sorgente puoi scriverlo o con l'IDE stesso oppure con un qualunque editor di testi.

Non afferro quale sia il problema, scusami... :sweat_smile:

Hola Leo72

Grazie della tua spiegazione! ora ti spiego il mio problema, ho preso in germania un kit che usa un atmel , esattamente Atmega 328 gia programmato, non so' se mi fornira' il file origine o del file bin dal momento che non e' piu' im produzione, io glielo chiesto e lui gentilmente mi ha detto che me lo fara' avere, per non sapere ne scrivere e di leggere vorrei poter avere la possibilita' di averene una coppia per ovvi motivi di sicurezza nel caso in cui lo bruci!

Questo e il mio problema, ora sto' vedendo di utilizzare la IDE della Atmel AVR studio 5.1 , quel che ho capito genera tutti file che a me necessitano, ovvio che non ha un decompillatore , pero in rete so' che si trovano.

Grazie e se hai qualche idea in merito fammi un fischio...Ciao 8)

bazzo54:
Hola Leo72

Grazie della tua spiegazione! ora ti spiego il mio problema, ho preso in germania un kit che usa un atmel , esattamente Atmega 328 gia programmato, non so' se mi fornira' il file origine o del file bin dal momento che non e' piu' im produzione, io glielo chiesto e lui gentilmente mi ha detto che me lo fara' avere, per non sapere ne scrivere e di leggere vorrei poter avere la possibilita' di averene una coppia per ovvi motivi di sicurezza nel caso in cui lo bruci!

Un microcontrollore ha dei "blocchi" hardware per cui può essere protetto in lettura. Se non è stato protetto in lettura, puoi estrarre il firmware in formato binario.
Questo firmware puoi riscriverlo su altri micro. Non puoi recuperare il sorgente da questo file, come ti è già stato spiegato. Al massimo, usando un disassemblatore, puoi ottenere il sorgente assembly, ma quest'ultimo ha poco da spartire con un sorgente in C

Questo e il mio problema, ora sto' vedendo di utilizzare la IDE della Atmel AVR studio 5.1 , quel che ho capito genera tutti file che a me necessitano, ovvio che non ha un decompillatore , pero in rete so' che si trovano.

Grazie e se hai qualche idea in merito fammi un fischio...Ciao 8)

Non te ne fai nulla ugualmente. Neanche AvrStudio può ricostruirti un sorgente in C partendo da un binario.

Grazie leo72

Spero che il fornitore non lo chiuda e che mi mandi almeno il file origine per poterlo eventualmente editarlo!

per il Dissasemblatore conosco gia' la bestia! l'utilizzavo parecchi anni fa', quello per il microprocessore 6502 , che si usava nell'apple prima generazione!!!!

Ciao e grazie 8)

Se è compatibile col codice 65xx non penso che riesca a disassemblare codice Avr ad 8 bit :wink:
Su Linux c'è vavrdisasm, non so su altri SO che tool ci sono ma sicuramente Google può aiutarti.
Penso comunque che AvrStudio abbia anche un disassemblatore.