Leggere flash Arudino Due con Bossac

Salve a tutti! Sto cercando di leggere la flash del mio Arduino Due tramite Bossac. Ho quindi collegato Arduino al pc tramite la Native USB, quindi bossac -r flash Il prompt mi restituisce:

Auto scan for device failed Try specifying a serial port with the '-p' option

Ho quindi provato a selezionare manualmente la porta: bossac -r flash -p COM7

No device found on COM7

Ho ripetuto l'operazione per tutte le COM, ma niente da fare. Ho notato una piccola differenza: se provo su COM7, bossac mi restituisce "No device found on COM7" con un leggero ritardo rispetto alle altre porte.

Non funziona con nessun'altro comando.

Invece, se cancello la flash (tramite il tasto ERASE) funzionano tutti in autoscan.

Grazie in anticipo! Buon Natale e felice 2014 a tutti !!!

Non ho ancora provato l'uso di bossac da terminale ma, se è come avrdude, avrà necessità di avere altri parametri. Forse dovrai passargli il tipo di MCU, la velocità di connessione, il tipo di memoria da leggere e così via.

Ti consiglio di mettere l'IDE in modalità verbose durante il caricamento degli sketch, fare l'upload di un programmino semplice semplice e guardare i parametri che l'IDE passa a bossac. Alternativamente chiedi l'help al programma stesso con "bossac --help" o quel che è sul tuo SO.

Ho cancellato la flash (ERASE) Carico il software tramite Native, Verbose dell'uploader: Una volta che ha compilato il codice premo il tasto RESET sull'arduino (altrimenti non parte). Passa a bossac questo comando:

Found upload port: COM8 X:\arduino-1.5.2/hardware/tools/bossac.exe --port=COM8 -U true -e -w -v -b C:\Users\Admin\AppData\Local\Temp\build3192030108212145874.tmp/sketch1.cpp.bin -R

CARICATO!

Quindi: Seleziona la porta Override usb port autodetection Erase Write Verify Boot from flash Il file... Reset

Nessun'altro parametro. Ho provato anche con -U true e -U false ma nulla da fare

Poi ho provato a caricare di nuovo il programma ma questa volta senza cancellare la flash:

Found upload port: COM7 X:\arduino-1.5.2/hardware/tools/bossac.exe --port=COM7 -U true -e -w -v -b C:\Users\Admin\AppData\Local\Temp\build3192030108212145874.tmp/sketch1.cpp.bin -R No device found on COM7

EDIT: neppure SAM-BA rileva la com se è gia presente del codice sulla flash.

L'IDE la pilota come COM8, hai provato?

L'IDE da disponibile la COM8 a flash vuota e COM7 a flash scritta. Non da possibilità di selezionare com7 o com8. Ho provato anche con COM1 (sempre disponibile), ma forza il reset della porta tramite una apertura/chiusura a 1200bpsCOM1 (dice così) e torna su COM8 o COM7. Dopodichè stesso comportamento.

Rileggo ora il tuo 1° post. Programmi via Native USB. Prova usando l'altra porta, "Programming". Dovresti interfacciarti tramite l'Atmega16U2, che gestisce anche il reset del chip. Funzionano normalmente entrambe ma la seconda sarebbe da usare preferibilmente.

Si, ma infatti di solito programmo via programming port (COM5) Ma il mio obbiettivo non è scrivere da native, ma leggere il software che c'è sulla flash per estrarne un .hex o .bin Da programming port bossac non mi fa LEGGERE nulla, neanche le info del microcontrollore. Però si, via programming posso tranquillamente sovrascrivere la flash senza ERASE manuali.

Anche a me dice che non trova nulla. Ho messo allora l'upload verboso. Ecco cosa ottengon scegliendo la porta Programming:

Sketch uses 10.456 bytes (1%) of program storage space. Maximum is 524.288 bytes.
Forzo il reset della porta tramite una apertura/chiusura a 1200bps/dev/tty.usbmodem14211
/Applications/Arduino 1.5.5.app/Contents/Resources/Java/hardware/tools/bossac -i -d --port=tty.usbmodem14211 -U false -e -w -v -b /var/folders/wl/vx5jgb391kgd0jv2l4ybkr4m0000gn/T/build1530207125104735438.tmp/test_TRNG_module.cpp.bin -R

Sulla "Native USB":

Sketch uses 10.456 bytes (1%) of program storage space. Maximum is 524.288 bytes. Forzo il reset della porta tramite una apertura/chiusura a 1200bps/dev/tty.usbmodem14211 /Applications/Arduino 1.5.5.app/Contents/Resources/Java/hardware/tools/bossac -i -d --port=tty.usbmodem14211 -U true -e -w -v -b /var/folders/wl/vx5jgb391kgd0jv2l4ybkr4m0000gn/T/build1530207125104735438.tmp/test_TRNG_module.cpp.bin -R

Ci sono un sacco di parametri passati. Inoltre se copio la stringa sul terminale, ottengo sempre device non trovato. Va prima aperta e chiusa la seriale a 1200 bps per resettare il chip e metterlo in modalità programmazione.

Quindi stesso problema! Comunque se provo a leggere la flash vuota (da native dato che da programming non mi vede l'arduino) mi da il file con caratteri tutti uguali (e va bene). Altra cosa che ho notato è che con la security flag attivata riesco comunque ad accedere alla flash vuota e leggerne il contenuto (ovvero tutti caratteri uguali). E' normale?

EDIT: ALTRIMENTI, esiste un'altro modo per estrarre il software dalla flash di Arduino Due :) ??

Immagino che la lettura di una flash protetta dia caratteri senza senso. Probabilmente i caratteri tutti uguali sono dati dal programmatore che non legge nulla e restituisce un carattere di default oppure dalla stessa flash.

Per come è strutturata la Due, devi per forza aprire e chiudere la seriale a 1200 bps per resettare il chip se passi dall'Atmega16U2 oppure il reset glielo dai tu, passando dalla native usb. Però non ho fatto molti test con questa scheda, ce l'ho ma in pratica l'ho usata pochissimo e l'ho programmata solo tramite IDE. Andrebbe letto anche il manuale di bossac per vedere cos'è che vuol ricevere.

Grazie per le risposte!! Quindi non è possibile leggere la flash di Arduino Due (oppure è possibile quando è vuota, ovvero l'utilità in persona XD ) ?! E allora che ce l'hanno messo a fare il comando read?? Hahahaha. Probabilmente a questo punto il SAM3X8E non è completamente compatibile con Bossac. Esiste un'altro modo per leggerne la flash? EDIT: ho letto anche questa discussione ma alla fine resettano tutto http://forum.arduino.cc/index.php?topic=141628.0

Dovrei rileggere il datasheet, sinceramente non mi ricordo tutte le caratteristiche del Sam e se si può leggere la Flash. Lì però parlano di programmazione, e prima di programmare il chip va erasata la flash e resettato il micro, in modo che parta il bootloader in assenza di programma utente. sulla lettura, però, ne so quanto te.

Niente, non ci riesco neanch'io. Su "Native USB" la scheda manco viene vista. Usando "Programming" se passo la porta corretta, bossac restituisce "No device found" mentre se uso il parametro "-U true" (che dovrebbe fare l'auto scan) mi viene detto "Auto scan for device failed" e poi "Try specifying a serial port with the '-p' option"...

Ho notato che usando l'autoscan per un attimo il led RX della scheda lampeggia, un paio di volte se ho visto bene. Ma nulla. Ho provato anche col reset manuale ma non funziona. Sembra proprio che bisogna aprire e chiudere la seriale a 1200 bps affinché il chippino 16U2 resetti il Sam

Capito... vedrò di risolvere in qualche modo (sempre se è possibile). Grazie mille per le risposte !!! Se trovo qualcosa scriverò qui. Grazie ancora per la partecipazione leo72 !