Discussione Password SLE 4442

Sto usando il software su windows che mi hai linkato qui sopra, ho verificato bene i collegamenti e sono corretti ... non devo alimentare l'atmega a parte giusto? Da quel che si vede nell'immagine dei collegamenti i 5v li prende dal usbasp, e sull'usbasp stesso il jumper è correttamente su 5v.

Corretto, se i collegamenti sono giusti allora l'unica cosa da provare è collegare un quarzo.
 
Ultima modifica:
Corretto, se i collegamenti sono giusti allora l'unica cosa da provare è collegare un quarzo.
Stiamo andando su argomenti a me ignoti .. sarebbe stato troppo bello collegarlo con 5 fili e che tutto funzionasse da subito ..
Ok ora mi da Searching ... OK, o meglio, ho trovato un sistema provvisorio..
 
Compra un quarzo da 8MHz, tipo questo https://www.ebay.it/itm/4-Pezzi-Qua...804962?hash=item2880746aa2:g:xaMAAOSwqeVdHc5R
e collegalo fra i pin 9 e 10

Oppure ce l'hai arduino?
Usa questo sketch
C:
void setup() {
  pinMode(11, OUTPUT);
  cli();
}

void loop() {
  PORTB &= ~(1 << PB3); 
  __asm__("nop\n\t");
  PORTB |= (1 << PB3); 
  __asm__("nop\n\t");
}
e collega il pin 11 di Arduino al pin 9 dell'Atmega e la GND di Arduino alla GND dell'Atmega. L'arduino fornisce un clock esterno all'atmega che, se i suoi lock fuses sono programmati per avere un clock esterno, ne permetterà la programmazione.
 
Compra un quarzo da 8MHz, tipo questo https://www.ebay.it/itm/4-Pezzi-Qua...804962?hash=item2880746aa2:g:xaMAAOSwqeVdHc5R
e collegalo fra i pin 9 e 10

Oppure ce l'hai arduino?
Usa questo sketch
C:
void setup() {
  pinMode(11, OUTPUT);
  cli();
}

void loop() {
  PORTB &= ~(1 << PB3);
  __asm__("nop\n\t");
  PORTB |= (1 << PB3);
  __asm__("nop\n\t");
}
e collega il pin 11 di Arduino al pin 9 dell'Atmega e la GND di Arduino alla GND dell'Atmega. L'arduino fornisce un clock esterno all'atmega che, se i suoi lock fuses sono programmati per avere un clock esterno, ne permetterà la programmazione.
La prossima volta che farò l'operazione userò arduino!
Nel frattempo sono riuscito a scrivere l'atmega ... ci ho messo tra il vcc e il gnd un led ... e così è stato letto e scritto senza problemi.. Proprio una cosa alla Mioccugggino.
Che poi, quando io andrò ad inserire il wafer nel lettore, questo alimenterà a 5v per leggere il chip .. e quindi avrò lo stesso problema di prima senza il quarzo ... o il led XD
 
La prossima volta che farò l'operazione userò arduino!
Nel frattempo sono riuscito a scrivere l'atmega ... ci ho messo tra il vcc e il gnd un led ... e così è stato letto e scritto senza problemi.. Proprio una cosa alla Mioccugggino.
Se sei riuscito a scrivere correttamente i fuse presenti nel "Programming.md" alla fine non ti serve più il clock esterno, proprio perché i fuse che hai programmato impostano un clock da 8MHz interno al microcontrollore. A questo punto l'USBasp riesce sempre a scrivere nel micro.
 
Ultima modifica:
Bella notizia questa ... allora posso procedere a collegare l'atmega al pcb e via di corsa!
Messaggio unito automaticamente:

Nulla, nel file eeprom.hex risultano tutti FF ... magari domani riprovo, ma sembrerebbe non funzionare... spero di sbagliarmi
 
- Hai compilato il codice scommentando le istruzioni "define BACKDOOR" e "define WRITE_PSC" ?
Le righe 11 12 13 devono essere così
C:
//#define DEBUG
#define BACKDOOR
#define WRITE_PSC

- Se dai il comando della SLE4442 per leggere la main memory, leggi quello che ti aspetti ? Cioè almeno da questo punto, la card viene emulata correttamente?
 
- Hai compilato il codice scommentando le istruzioni "define BACKDOOR" e "define WRITE_PSC" ?
Le righe 11 12 13 devono essere così
C:
//#define DEBUG
#define BACKDOOR
#define WRITE_PSC

- Se dai il comando della SLE4442 per leggere la main memory, leggi quello che ti aspetti ? Cioè almeno da questo punto, la card viene emulata correttamente?
Si si, ho decommentato le due istruzioni, poi ho generato correttamente i file e caricati nell'atm ... domani riprovo da 0 a mente lucida e vedo cosa accade.
 
Come software usi quello del lettore N99 che ha questa interfaccia ?
Con questo software, se provi a dare il comando "Verify" con un PSC a caso (che ne so, tipo 11 22 33), il software dovrebbe darti un messaggio di errore (perchè il micro rimane impegnato a scrivere nella eeprom). Poi una volta che vai a leggere la memoria del micro dovresti trovarti 112233.
 
Come software usi quello del lettore N99 che ha questa interfaccia ?
Con questo software, se provi a dare il comando "Verify" con un PSC a caso (che ne so, tipo 11 22 33), il software dovrebbe darti un messaggio di errore (perchè il micro rimane impegnato a scrivere nella eeprom). Poi una volta che vai a leggere la memoria del micro dovresti trovarti 112233.

SI, il programma è quello.
Ora ho riprogrammato l'atmega, collegato correttamente ai pin 4,5,6,7,8 del wafer, e sono pronto ad andare dalla macchina.
Una volta che la macchina mi restituisce errore (come hai giustamente detto, questo è corretto per la questione della latenza, ma a noi non interessa perchè a quel punto il psc è già in memoria) torno a casa, collego nuovamente l'atmega al usbasp e genero il file eeprom.hex. al cui interno, nei primi 3 byte dovrei trovarmi il psc in chiaro.
Questo è quello che sto per fare, al momento non ho ancora provato a leggere l'atmega usando il software del N99.
Ah oh, ora capisco cosa volevi dirmi, quel che dici è per fare una prova "in casa" e verificare che tutto funzioni.
 
Tutto corretto, però prima di andare alla macchina io comunque un test per vedere se è tutto ok con il software del N99 lo farei....
 
Ultima modifica:
Domandona stupida ... se uso la main di una carta bloccata (tentativi psc sbagliati) può comprometterne il funzionamento?
Non dovrebbe in quanto la main non viene modificata, l'unica ad esserlo è la secure memory ...
Messaggio unito automaticamente:

Ok, ho pprovato come hai detto ma in effetti non mi scrive il psc, inoltre facendo una lettura della main mi da tutti FF, invece dovrebbe darmi la main della carta che gli inserito
Messaggio unito automaticamente:

Non capisco dove sta l'errore, uso kali per la scrittura e la lettura, i file si generano correttamente e l'upload sull'atmega avviene al 100%.. i pin 4 5 6 7 8 dell'atmega sono corretti e sono collegati alle relative piazzole sul wafer ... altro non c'è!
Messaggio unito automaticamente:

Perdonate il lavoro fatto coi piedi ... è appunto solo per fare delle prove veloci..
 

Allegati

  • 20200307_104036.jpg
    20200307_104036.jpg
    373.9 KB · Visualizzazioni: 75
  • 20200307_104005.jpg
    20200307_104005.jpg
    1.9 MB · Visualizzazioni: 77
Ultima modifica:
I collegamenti sono fatti così (vedi immagine allegata)?
Messaggio unito automaticamente:

Giusto per sicurezza, esegui questo comando
Codice:
avrdude -p atmega8 -c usbasp -U lfuse:r:-:i -v
e posta l'output.

Invia pure l'hex che hai generato che provo a caricarlo sul mio Atmega8
 

Allegati

  • 20200307_104005.jpg
    20200307_104005.jpg
    1 MB · Visualizzazioni: 42
Ultima modifica:
I collegamenti sono fatti così (vedi immagine allegata)?
Messaggio unito automaticamente:

Giusto per sicurezza, esegui questo comando
Codice:
avrdude -p atmega8 -c usbasp -U lfuse:r:-:i -v
e posta l'output.

Invia pure l'hex che hai generato che provo a caricarlo sul mio Atmega8
Ok eseguo le tue prove ma solo dopo un'ultimo tentativo .. ho cambiato wafer e usato uno a 6 piazzole, ora la main viene correttamente letta ... ora cè gente in lavanderia, appena se ne vanno provo (a furia ti togliere e mettere l'atmega i pin si stanno distruggendo), ma ho un buon presentimento!
Messaggio unito automaticamente:

Allora, facendo il verify dal software N99, compare il psc nel file eeprom.hex in maniera corretta , ma andando dalla macchina, inserisco la card, mi da un errore "error card" e quando vado a generare il file eeprom risulta tutto FF.
 
Ultima modifica:
Giusto per curiosità, prova a ricompilare il file commentando la riga "define WRITE_PSC"
Codice:
//#define DEBUG
#define BACKDOOR
//#define WRITE_PSC
In questo modo non fa il write sulla EEPROM e la card non si blocca, vedi se la card funziona così (il PSC non lo ottieni ma almeno verifichiamo che l'emulazione funziona). Magari quando trova un errore la macchina va a togliere l'alimentazione sulla card e il micro non riesce a scrivere sulla EEPROM. Sono tutte ipotesi eh, nulla di certo....

Altra domanda stupidissima, sei sicuro che il PSC della tua card non sia FF FF FF ? Hai già provato a inserirlo (tanto ci sono 7 tentativi....) ?
Messaggio unito automaticamente:

Niente, ho provato ad usare un altro lettore di card (non N99) e ho problemi con l'ATR.....devo rivedere il codice
Messaggio unito automaticamente:

Codice corretto, era una stupidata (due variabili che non venivano inizializzate). Scarica il nuovo codice e ricompila.
 
Ultima modifica:
Giusto per curiosità, prova a ricompilare il file commentando la riga "define WRITE_PSC"
Codice:
//#define DEBUG
#define BACKDOOR
//#define WRITE_PSC
In questo modo non fa il write sulla EEPROM e la card non si blocca, vedi se la card funziona così (il PSC non lo ottieni ma almeno verifichiamo che l'emulazione funziona). Magari quando trova un errore la macchina va a togliere l'alimentazione sulla card e il micro non riesce a scrivere sulla EEPROM. Sono tutte ipotesi eh, nulla di certo....

Altra domanda stupidissima, sei sicuro che il PSC della tua card non sia FF FF FF ? Hai già provato a inserirlo (tanto ci sono 7 tentativi....) ?
Messaggio unito automaticamente:

Niente, ho provato ad usare un altro lettore di card (non N99) e ho problemi con l'ATR.....devo rivedere il codice
Messaggio unito automaticamente:

Codice corretto, era una stupidata (due variabili che non venivano inizializzate). Scarica il nuovo codice e ricompila.
finisco di mangiare e vado di corsa a testare tutto!!
Messaggio unito automaticamente:

fatto ... ora non viene nuovamente letto dal usbasp ... che sia sempre da fare la roba del quarzo?
Messaggio unito automaticamente:

Si allora, rimettendo il led sono riuscito a generare il file.hex, ma ancora tutti FF ... e no, il psc non è FF FF FF.
 
Hai provato a commentare la riga "define WRITE_PSC" per vedere se la card viene almeno emulata correttamente? Come si comporta la macchina?

Mi manderesti per sicurezza il file .hex che carichi sul micro?
 
No, non ho ancora provato ... ora torno e vedo!
Comunque questo è il main.hex (ovviamente va sostituito .txt con .hex)
 

Allegati

  • main.txt
    4.3 KB · Visualizzazioni: 40
Ultima modifica:
Succede qualcosa di strano, con il .hex che mi hai dato non riesco a scrivere nulla sulla eeprom (l'emulazione è ok, il comando verify PSC dà errore ma non viene scritto nulla sulla EEPROM).
Io il codice lo compilo con Atmel Studio, non vorrei che ci sia qualche settaggio diverso da fare usando solo avr-gcc.
Ora indago.
Messaggio unito automaticamente:

No, la programmazione avviene regolarmente, i passaggi per la programmazione sono corretti. A questo punto, mi passeresti il codice (i 3 files)?
 
Ho creato questo programmino per fare i dump della SLE4442 usando le librerie del lettore N99 https://gofile.io/?c=QisEtA
Una volta aperto creerà un file chiamato "Log.txt" contenente il dump della main memory della card.
Per controllare che i dati siano stati caricati correttamente, prova a inserire la wafer nel lettore N99 ed esegui SLE442.exe. Prendi il log che genera e mettilo da parte, fai la stessa cosa con la card originale. I due log devono essere identici.

Questo per toglierci ogni dubbio del fatto che la main memory delle due card sia la stessa.
 
Ho creato questo programmino per fare i dump della SLE4442 usando le librerie del lettore N99 https://gofile.io/?c=QisEtA
Una volta aperto creerà un file chiamato "Log.txt" contenente il dump della main memory della card.
Per controllare che i dati siano stati caricati correttamente, prova a inserire la wafer nel lettore N99 ed esegui SLE442.exe. Prendi il log che genera e mettilo da parte, fai la stessa cosa con la card originale. I due log devono essere identici.

Questo per toglierci ogni dubbio del fatto che la main memory delle due card sia la stessa.
Ok, controllato e i file sono identici ... ora per tagliare la testa al toro, inserisco la main della nuova card che ho appena acquistato (ed ancora funzionante) poi dato che dici che la simulazione funge, riprovo con il grub del psc, ma devo attendere un po perchè il lavaggio si è riempito di gente.
Ad ogni modo posso già dire che per eseguire le prove si deve utilizzare un wafer a 8 contatti, evidentemente quelle a 10 creano problemi...
 
con quelli non ho ancora provato, ho testato gli stessi tranne il main che aveva le 2 istruzioni scommentate per il recupero del psc.
In quel caso la macchina suona e da "error 1"