Attrezzature Elettronica

Logic Analyzer Revenge!!

Era da qualche tempo che pensavo di scrivere un articolo sull’uso dei logic analyzer su linux, purtroppo però il mio strumento dopo anni di onorato servizio ha smesso di funzionare…. Quindi l’articolo da “Guida all’uso del Logic Analyzer  sotto linux” è diventato “Logic Analyzer Revenge” in cui descriverò il processo seguito per la riparazione.

Iniziamo con il dire che il mio analizzatore è un Kingst LA1010, 16 CH 100/50/32/16 Mhz (3/6/9/16 canali), che alla fine guardandoci bene dentro sembra essere una mezza copia di un noto analizzatore commerciale…

L’oggettino in questione in genere lo uso con pulseview (un front-end di sigrok, ottimo software analizzatore opensource per linux su cui farò un articolo dedicato) per analizzare alcuni flussi logici tra periferiche ma qualche giorno fa di punto in bianco ha smesso di funzionare, ma non ci arrendiamo 😉

Allora il nostro analizzatore si presenta cosi:

Dalle foto con un po di voglia e tempo sono riuscito a risalire all’elenco dei componenti

Allora riassumendo a grandi linee il funzionamento possiamo dire, che i due pezzi forti dell’analizzatore sono il Cypress (CY7C68013A) e l’FPGA della Xilinx (Spartan 3A) con le rispettive EEPROM, il resto dei componenti non sono altro che regolatori di tensione, transistor per traslare i livelli della logica ed i regolatori di tensione.

L’analisi della scheda è partita proprio dai regolatori di tensione AMS1117-3.3 e 1.2 che servono a convertire la tensione a 5V dell’usb a 3.3v ed a 1.2v, ma entrambi funzionavano egregiamente.

A questo punto mi sono armato dei datasheet del cypress e dello xilinx (che trovate nei link di sopra) per cercare di capire come funzionassero, entrambi gli integrati non dispongono di memoria interna, ma necessitano di una EEPROM esterna in cui è salvato il codice che loro si caricano all’avvio.

  • Cypress CY7C68013A:

    Questo integrato si occupa dell’interfaccia USB ed in parole povere fa da ponte tra il computer e lo Xilinx che non dispone dell’interfaccia USB, lavora con una EEPROM su bus I2C nel mio caso è una ATMEL 24C02, analizzando il datasheet di quest’ultima sono risalito a quali sono i pin del bus I2C e quelli di alimentazione quindi ho provato a collegarci il fidato Bus Pirate v3.6 (che trovate qui), sono riuscito a collegarmi al volo accedendo tranquillamente alla memoria, in seguito con un altro logic analyzer ho sniffato il flusso dati tra questa EEPROM ed il CY7C68013A ed i due dialogavano tranquillamente, tanto che quest’ultimo caricatosi il firmware riusciva a generarmi la porta USB e ad essere riconosciuto dal PC, nella EEPROM di questo integrato non è residente tutto il firmware, ma solo la parte che definisce quali sono i pin utilizzate, il resto del codice lo riceve via usb tramite il driver usb del computer a cui è collegato.

 

  • Xilinx Spartan-3A XC3S200A:

    Questo integrato è un FPGA ed è colui che si occupa di tutti i campionamenti sui vari canali che poi tramite il Cypress vengono inviati al computer, questo integrato necessita di una EEPROM che lavora su protocollo SPI in cui è salvata la configurazione che l’integrato si carica ad ogni avvio, nel mio caso la EEPROM (al contrario del cypress in questa EEPROM è presente tutto il codice necessario al funzionamento dello Spartan) è una ST 25P40, sempre seguendo il datasheet dell’EEPROM sono risalito alla piedinatura del bus SPI e dell’alimentazione, inoltre ho scoperto che un array di pin sulla board permetteva un interfacciamento agile, nella foto sottostante si capisce meglio.


    Il pin out dell’array di pin qui a sinistra corrisponde rispettivamente da destra verso sinistra al CLK, MISO, MOSI, CS, GND e WP(write protect) della EEPROM SPI su cui è scritto il firmware dello Xilinx Spartan 3A. Una volta interfacciato il Bus Pirate a questo integrato mi sono accorto che anche eseguendo delle scansioni l’EEPROM non era identificabile, ed a qualsiasi tentativo di accesso rispondeva con 0xFF che in genere corrisponde all’ultima allocazione, un po come se la memoria fosse piena con l’inconveniente che questa EEPROM  non è scrivibile in quando ha il piedino della protezione scrittura abilitato.

    Nella schermata sottostante vedete un pezzo campionato del flusso tra Spartan e EEPROM sniffato con un altro logic analyzer.

Quindi ho provato a rimuovere la protezione scrittura eliminando la resistenza denominata R14 nella foto che trovate sopra dove elenco i pin, per vedere se riuscivo a fare un dump (copia) del codice in essa contenuto ma il risultato non è cambiato, anche provando a cancellarla ho ottenuto lo stesso risultato.

Quindi trovato il problema ho provveduto ad acquistare un altra memoria e l’ho sostituita, però risolto un problema mi sono trovato a doverne affrontare un altro, perchè si pur sostituendola con un EEPROM identica non potevo far funzionare la mia scheda in quanto non disponevo del codice da riscrivere sulla nuova EEPROM.

L’idea mi è arrivata mentre discutevo del problema con un amico, il buon Diego Formica, che mi disse “strano il tuo problema, io ne ho uno uguale e funziona benissimo!”, ebbene detto ciò mi son fatto prestare il suo (che fortunatamente funzionava) e con l’ausilio del mio fidato Bus Pirate e l’applicativo flashrom ho effettuato un dump della sua EEPROM, con il seguente comando:

flashrom -p buspirate_spi:dev=/dev/ttyUSB0,spispeed=2M -r 25p40.bin -V

Da qui la strada è stata tutta in discesa, ricollegando il bus pirate al mio analizzatore carrozzato con la nuova EEPROM ho riscritto il firmware “dumpato” con il seguente comando:

 flashrom -p buspirate_spi:dev=/dev/ttyUSB0,spispeed=2M -w 25p40.bin -V 

Il risultato finale ha sortito gli effetti desiderati, il logic analyzer è resuscitato sperando che mi accompagni nei seppur rari esperimenti ancora per un lungo tempo.

Un simpatico “Hello World!” decodificato da una seriale con l’analizzatore riparato 🙂

 

Ringrazio ancora Diego per essersi fidato nel prestarmi il suo analizzatore.

Alla prossima!!!

 

Iscriviti al blog tramite email

Inserisci il tuo indirizzo e-mail per iscriverti a questo blog, e ricevere via e-mail le notifiche di nuovi post.

Unisciti a 27 altri iscritti