Forum Moderator
Italy
Offline
Brattain Member
Karma: 219
Posts: 16462
Don't know what I do
|
 |
« Reply #15 on: December 07, 2012, 01:59:06 pm » |
c'è lo fatta  l'arduino è vivo!!! grazie mille,il prossimo passo e modificare i fuse grazie ancora per le dritte. Appena mi ci metto ti faccio sapere come va:) sono stra contento!!! Pro posteri, com'è che hai fatto? Cosa c'era che non andava?
|
|
|
|
|
Logged
|
|
|
|
|
Offline
God Member
Karma: 6
Posts: 541
|
 |
« Reply #16 on: December 07, 2012, 02:15:11 pm » |
Salve mi chiamo Stefano e sono nuovo utente del forum, sarei infinitamente grato se qualcuno riesce a d.............................................. Per la programmazione isp ho individuato anche un programmatore specifico , che è l' avr pololu. Mi consigliate di acquistare un programmatore o la cosa è fattibile anche utilizzando arduino come programmatore? Ogni risposta e ben accetta!!!
mah forse stai perdendo tempo tieni sempre a mente che qualsiasi programmatore (serio) di arduino, in 2 ore riesce a duplicarti il programma, basta che "osserva" le uscite/entrate e in un modo o nell'altro ha un programma simile che fa le stesse identiche cose che fa il tuo sketch, la protezione puo essere messa quando ci sono dei pericoli hardware per il resto è inutile la scopiazzatura ci puo stare per uno che è proprio agli inizi ma poi dopo qualche mese uno si fa tutto da solo perche le cose vengono molto meglio
|
|
|
|
|
Logged
|
Le cose si possono considerare facili in due casi: quando le si conosce bene o quando non le si conosce affatto...
|
|
|
|
Forum Moderator
Italy
Offline
Brattain Member
Karma: 219
Posts: 16462
Don't know what I do
|
 |
« Reply #17 on: December 07, 2012, 02:37:30 pm » |
tieni sempre a mente che qualsiasi programmatore (serio) di arduino, in 2 ore riesce a duplicarti il programma,
basta che "osserva" le uscite/entrate
e in un modo o nell'altro ha un programma simile che fa le stesse identiche cose che fa il tuo sketch,
Scusami gingardu ma dissento perché non è sempre così facile replicare ciò che fa un programma osservando solo gli I/O. Posso concordare con te che replicare un circuito è facile perché basta osservarlo e ricostuirlo pari pari, ma un software non è così facile da replicare. Il reverse engineering (retroingegnerizzazione) non è un'operazione da 2 ore.
|
|
|
|
|
Logged
|
|
|
|
|
BZ (I)
Offline
Brattain Member
Karma: 162
Posts: 15712
+39 349 2158303
|
 |
« Reply #18 on: December 07, 2012, 02:41:49 pm » |
c'è lo fatta  l'arduino è vivo!!! grazie mille,il prossimo passo e modificare i fuse grazie ancora per le dritte. Appena mi ci metto ti faccio sapere come va:) sono stra contento!!! Sappi che si puó resettare i fuse del microcontroller, ma in quel caso si cancella tutto il programma memorizzato. Si ha dopo un ATmega vergine. Ciao Uwe
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 36
|
 |
« Reply #19 on: December 10, 2012, 03:35:29 am » |
Ho utilizzato il collegamento pin to pin fra i due arduini mega come descritto nella guida di Menniti e con il relarivo condensatore da 10 micro per protezione dall'autoreset. Nell'arduino arduino programmatore ho caricato lo sketch isp. Poi come mi hai spiegato tu ho utilizzato la linea di comando di avrdude per fare l'erase del micro. Il passo successivo è quello di effettuare il caricamento del bootloader con i relativi lock bits modificati, giusto? Correggimi se sbaglio, per effettuare il caricamento del bootloader attraverso avrdude devo utilizzare il file boards opportunamente modificato. il valore dei fuse li prelevo dal sito: http://www.engbedded.com/fusecalc
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Offline
Brattain Member
Karma: 219
Posts: 16462
Don't know what I do
|
 |
« Reply #20 on: December 10, 2012, 04:32:20 am » |
I lock bit li devi modificare dopo aver scritto il firmware. Inoltre se hai una MEGA funzionante, essa ha già il bootloader, quindi l'operazione di caricarcelo sopra non è necessaria.
Io farei quindi così: prendi la seconda MEGA, la colleghi alla prima, ci flashi lo sketch che vuoi registrarci, poi apri un terminale e, usando la prima come programmatore ISP (mi pare che la MEGA sia vista come STK500v2 da avrdude), scrivi i lock bit per bloccare la lettura del firmware. Controlli se effettivamente la lettura è disattivata, controlli se la scheda è perfettamente funzionante, cioè se esegue correttamente il programma, e solo allora disattivi sempre con avrdude la programmazione SPI ed il pin di reset in modo che la scheda non sia più neanche riprogrammabile.
Da ora in poi la scheda non può essere più modificata. L'unico modo per tornare indietro è usare un programmatore H/V con spedisca i 12V sul pin di reset.
ATTENZIONE: declino ogni responsabilità per schede bloccate e/o non più utilizzabili. Esegui l'operazione a tuo rischio e pericolo.
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 36
|
 |
« Reply #21 on: December 10, 2012, 08:16:55 am » |
Grazie ancora per le tue pronte risposte  , ti chiedo un altra cosa e poi penso di essere apposto. Se io setto solo i lock bits senza andare a disabilitare la spi e il reset, si ha la possibilità la possibilità di estrarre il firmware? Cio che importa a me è che non sia possibile la lettura, poi se capita che qualcuno vada a spingere il reset o provi a leggere l'arduino si arrangia!! l'impottante è che non riesca a recuperare il firmware.(Se posso fare a meno di disabilitare il bit SPIEN ne faccio a meno, questo per non rischiare di bloccare l'arduino) Nel sito http://www.engbedded.com non riesco a capire come devo fare per impostare i lock bits, perchè gli autput sono solo i fuse low, high ed extended. Non menziona i lock bits. come devo procedere??
|
|
|
|
|
Logged
|
|
|
|
|
Offline
God Member
Karma: 6
Posts: 541
|
 |
« Reply #22 on: December 10, 2012, 08:32:34 am » |
tieni sempre a mente che qualsiasi programmatore (serio) di arduino, in 2 ore riesce a duplicarti il programma,
basta che "osserva" le uscite/entrate
e in un modo o nell'altro ha un programma simile che fa le stesse identiche cose che fa il tuo sketch,
Scusami gingardu ma dissento perché non è sempre così facile replicare ciò che fa un programma osservando solo gli I/O. Posso concordare con te che replicare un circuito è facile perché basta osservarlo e ricostuirlo pari pari, ma un software non è così facile da replicare. Il reverse engineering (retroingegnerizzazione) non è un'operazione da 2 ore. ma se uno sa il fatto suo dovrebbe far fare tutto quello che vuole ad arduino un circuito che fa una determinata cosa è un attimo a copiarlo se uno fa un circuito con arduino che tutte le entrate analogiche leggono sensori analogici di temperatura lo si può replicare al volo senza rispettare ogni singola sillaba o sequenza, questo per quanto riguarda le capacita/memoria di arduino ovviamente se prendiamo software da centinaia di megabyte il discorso cambia poi la protezione più efficace che conosco e cancellare le sigle sugli integrati e una bella colata di gomma liquida sullo stampato
|
|
|
|
|
Logged
|
Le cose si possono considerare facili in due casi: quando le si conosce bene o quando non le si conosce affatto...
|
|
|
|
Forum Moderator
Italy
Offline
Brattain Member
Karma: 219
Posts: 16462
Don't know what I do
|
 |
« Reply #23 on: December 10, 2012, 09:32:20 am » |
Grazie ancora per le tue pronte risposte  , ti chiedo un altra cosa e poi penso di essere apposto. Se io setto solo i lock bits senza andare a disabilitare la spi e il reset, si ha la possibilità la possibilità di estrarre il firmware? Cio che importa a me è che non sia possibile la lettura, poi se capita che qualcuno vada a spingere il reset o provi a leggere l'arduino si arrangia!! l'impottante è che non riesca a recuperare il firmware.(Se posso fare a meno di disabilitare il bit SPIEN ne faccio a meno, questo per non rischiare di bloccare l'arduino)
OK. Allora procedi come ti ho detto. Programmi lo sketch normalmente. Poi alla fine ti armi di terminale ed imposti i lock bit e basta. Nel sito http://www.engbedded.com non riesco a capire come devo fare per impostare i lock bits, perchè gli autput sono solo i fuse low, high ed extended. Non menziona i lock bits. come devo procedere?? I lock bit si impostano specificando ad avrdude di modificare questa parte di memoria (i lock bit sono registri, indi per avrdude sono un tipo di memoria). Il parametro da usare è "-U", la memoria da specificare "lock". avrdude -c stk500v2 -p m2560 -P COM3 -b 19200 -U lock:w:0x00:m -D dovrebbe fare al caso tuo. Ho messo "stk500v2" come programmatore perché mi sembra che l'ArduinoISP per i Mega emuli questo programmatore, però se tu hai usato una voce differente e ti ha funzionato, usala. Non specificare nient'altro, tu devi solo cambiare i lock bit, non il resto della memoria. Il parametro "-D" serve apposto per non far toccare la Flash.
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 36
|
 |
« Reply #24 on: December 10, 2012, 10:23:18 am » |
Perchè il valore del lock deve essere 0x00? Cercando in internet ho trovato una discussione che parlava dei lock bits,e che fa riferimento all'artticolo sulla programmazione HV di Atmel che si trova nella rivista eElettronicaIn di luglio/agosto, vengono riportati i seguenti valori per i lock bits. 0xff (nessuna protezione) 0xfe(protezione in scrittura) 0xfc(protezione in scrittura lettura) Come dicevi tu tali bit si possono resettare solo tramite erase della memoria flash, una volta settati la possibilità di effettuare programmazione sui fuse non è consentita, quindi se uno volesse programmare i fuse, prima deve programmare quelli, e successivamente programmare i lock bits. Il tempo di fare un po di prove e poi ti confermo se i valori da me elencati sono giusti. Grazie ancora per l'aiuto che mi hai dato 
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Offline
Brattain Member
Karma: 219
Posts: 16462
Don't know what I do
|
 |
« Reply #25 on: December 10, 2012, 10:40:52 am » |
Perchè il valore del lock deve essere 0x00? Cercando in internet ho trovato una discussione che parlava dei lock bits,e che fa riferimento all'artticolo sulla programmazione HV di Atmel che si trova nella rivista eElettronicaIn di luglio/agosto, vengono riportati i seguenti valori per i lock bits. 0xff (nessuna protezione) 0xfe(protezione in scrittura) 0xfc(protezione in scrittura lettura) Come dicevi tu tali bit si possono resettare solo tramite erase della memoria flash, una volta settati la possibilità di effettuare programmazione sui fuse non è consentita, quindi se uno volesse programmare i fuse, prima deve programmare quelli, e successivamente programmare i lock bits. Il tempo di fare un po di prove e poi ti confermo se i valori da me elencati sono giusti. Grazie ancora per l'aiuto che mi hai dato  I bit dei registri di configurazione del microcontrollore hanno una logica "invertita" rispetto a quello che normalmente si usa in informatica: 1 significa NON programmato, 0 significa programmato. I lock bit sono 2, LB1 e LB0. Entrambi non programmati valgono 0b11, quindi 0x03, entrambi programmati valgono 0b00, quindi 0x00. C'è il problema dei bit non usati, che vengono a volte letti come 1 ed altre come 0. 0xfc equivale quindi a 0x00 se gli altri bit sono letti come 1. Fai delle prove. Ad esempio il fuse ext (efuse) spesso si programma con i bit non usati su 1, altre volte con i bit non usati su 0.
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 36
|
 |
« Reply #26 on: December 10, 2012, 10:53:00 am » |
capito  !!faccio alcune prove e poi ti dico qual'è il metodo esatto!!
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 36
|
 |
« Reply #27 on: December 12, 2012, 04:04:08 am » |
ho fatto alcune prove e confermo che per settare i bit in maniera da bloccare sia scrittura che lettura nell'arduino è quello di programmare i lock bit a 0x00.
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Offline
Brattain Member
Karma: 219
Posts: 16462
Don't know what I do
|
 |
« Reply #28 on: December 12, 2012, 05:21:16 am » |
ho fatto alcune prove e confermo che per settare i bit in maniera da bloccare sia scrittura che lettura nell'arduino è quello di programmare i lock bit a 0x00.
Quindi ci sei riuscito? 
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 36
|
 |
« Reply #29 on: December 12, 2012, 05:51:56 am » |
Si ce l'ho fatta, merito soprattutto tuo leo  . A breve avro bisogno di un po di aiuto perché dovro passare all'utilizzo dei moduli Xbee per far comunicare piu sensori con un unita centrale comandata da arduino!allora si che ci sarà da ridere 
|
|
|
|
|
Logged
|
|
|
|
|
|