Domanda:
Come identifico e utilizzo JTAG?
mrduclaw
2013-03-29 23:32:04 UTC
view on stackexchange narkive permalink

Sono un esperto di software in tutto e per tutto. Ma periodicamente quando smonto l'hardware so di cercare porte JTAG e porte RS232. Finora sono sempre stato fortunato e sono riuscito a saldare i pin alla porta RS232 e ottenere una connessione seriale.

Per le volte in futuro in cui sarò sfortunato, qualcuno può spiegarmi cosa JTAG è (cioè c'è solo un tipo di JTAG e posso aspettarmi di collegarlo a un singolo tipo di porta, come un DB-9 per seriale?) E come potrei usarlo per scaricare il firmware da un sistema embedded o è tutto specifico del produttore?

Quattro risposte:
#1
+24
Mellowcandle
2013-03-30 01:54:24 UTC
view on stackexchange narkive permalink

Sono disponibili alcuni connettori JTAG, quindi è difficile dire quale e come sono posizionati i pin.

Ti suggerisco di prendere una lente di ingrandimento e leggere il modello del microcontrollore. Con il modello potrai trovare la scheda tecnica su Internet, dai un'occhiata al PIN del microcontrollore e vedi quante uscite JTAG ha. Alcuni chip più recenti hanno output di traccia, altri no. Questo può davvero restringere le tue opzioni.

Potresti dare un'occhiata qui, per una rapida occhiata ai vari connettori JTAG.

Un'altra cosa che vale la pena menzionando, vari microcontrollori, hanno un bit specifico, che quando impostato, i connettori JTAG sono disabilitati. Questo viene fatto al momento del rilascio, per assicurarsi che nessuno tenti di rubare il firmware o di eseguire il debug del sistema. L'unico modo per abilitare nuovamente il JTAG è resettare il microcontrollore. Ciò causerà il ripristino completo della flash interna, quindi tutto il firmware andrà perso ...

Vorrei solo aggiungere che nella mia esperienza (dispositivi di fascia alta) il più delle volte l'hard reset non funziona per abilitare il JTAG. Queste interfacce sono spesso permanentemente bloccate saltando un fusibile. Negli altri casi sono protetti da password da chiavi a 64 bit con ritardi significativi (millisecondi fino a un secondo) tra possibili tentativi di sblocco. Solo per assicurarti di non voler nemmeno pensare a forzarli con una fattoria di dispositivi. E per ingannarti un po 'a volte piace anche darti 1 tentativo di sblocco e poi ignorare silenziosamente il ripristino fino a un ripristino a freddo.
#2
+21
0xC0000022L
2013-04-25 00:17:13 UTC
view on stackexchange narkive permalink

JTAG è stato inizialmente creato per testare / verificare i dispositivi hardware. Il processo è chiamato boundary scanning e JTAG prende il nome dal gruppo di lavoro: J oint T est A ction G roup, qualche tempo negli anni '80.

L'idea era di definire un'interfaccia che potesse essere usata per testare l'hardware (microcontrollori e periferiche collegate dopo la produzione). Cioè dopo lo sviluppo dell'hardware e la successiva produzione dello stesso.

I dispositivi utilizzati per eseguire la boundary scan secondo JTAG sono chiamati JTAG probes . Erano collegati alla porta parallela della tua macchina, ma oggigiorno sono più spesso collegati tramite USB e si basano su uno dei chip FTDI.

Su un PCB i chip e le periferiche formano un "daisy chain" collegato al TAP (test access port). Quindi puoi testare i vari componenti attraverso una porta. L'istruzione BYPASS viene utilizzata per dire a un dispositivo in precedenza sulla catena di ignorare i tuoi comandi e passarli. IDCODE viene utilizzato per identificare il dispositivo e alcune caratteristiche di base.

Una panoramica accurata di alcuni dettagli tecnici può essere trovata qui: JTAG - Una panoramica tecnica, ma l ' articolo di Wikipedia e il suo elenco di riferimenti forniscono anche informazioni preziose. Tieni presente che questo è stato stabilito prima della nascita del WWW e che molte informazioni al riguardo sono state bandite sugli alberi morti.

Il termine boundary scan è ancora utilizzato per descrivere il processo e fa parte dell'acronimo BSDL ( boundary scan description language), che normalmente ti metteresti in contatto se dovessi eseguire la scansione dei confini di un dispositivo / chip e il fornitore si aspettava che lo facessi. Altrimenti tendono a essere piuttosto riservati al riguardo. La ragione della segretezza è che essenzialmente danno via una parte del loro design hardware, che la maggior parte di questi fornitori di hardware considera un segreto commerciale. Ho avuto la fortuna di avere accesso al file BSDL, sotto NDA, anche se non era per l'esatta revisione del silicio che stavo eseguendo il debug. Ma mi è stato assicurato che il file BSDL avrebbe funzionato perfettamente con la revisione in silicio del chip che avevo. Ma a meno che tu non possa permetterti di distruggere il tuo hardware, devi assicurarti che i tuoi dati BSDL corrispondano all'hardware a cui ti connetti .

Oggigiorno JTAG non viene utilizzato solo per solo test , però. Ovviamente il debug dell'hardware è un sottoinsieme del test, quindi non è questo che intendo. Quello che voglio dire è che le sonde JTAG consentono anche di eseguire il flashing del firmware su hardware altrimenti defunto. E questo è essenziale per rimuovere l'hardware in muratura .

Possibili problemi

Ci sono diversi problemi nell'utilizzo di JTAG che devi superare a parte dall'identificazione dei connettori. E ignorerò la parte Mellowcandle menzionata nella sua risposta.

Devi essere sicuro di aver capito bene, perché altrimenti puoi friggere il tuo hardware invece di, per esempio , debracciandolo.

Identifica i pin JTAG

Spesso troverai TMS, TCK, TDI e così via incisi sul tuo PCB, quindi sai che hai a che fare con un dispositivo che supporta JTAG. Le lenti d'ingrandimento possono essere di aiuto;)

Ma questa non è davvero un'arte arcana: diventa più difficile quando i pin non sono etichettati e devi fare affidamento sulla documentazione di terze parti.

Ovviamente è anche possibile che la tua scheda abbia un header JTAG invece di semplici pin / contatti.

Identifica il microcontrollore

Sì, infatti devi identificare il tipo di chip che hai davanti e scoprire quale voltaggio si aspetta, perché altrimenti potresti friggere il tuo chip o la tua sonda JTAG o entrambi .

Se sei fortunato, hai un'intestazione JTAG sul tuo dispositivo che ti aiuta a scoprire di cosa si tratta e implicitamente quale voltaggio si aspetta e così via. Per quanto ne so, esistono quasi standard per ARM e MIPS. Fare riferimento alla risposta di Mellowcandle per il primo e a questo e questo per il secondo.

Usa tutta la documentazione disponibile che puoi trovare per verificare qualsiasi ipotesi tu fai. I router DSL hanno spesso CPU MIPS, ma anche ARM sono comuni e forse anche altri. Progetti come OpenWRT hanno una grande quantità di informazioni disponibili sull'hardware, anche hardware non supportato direttamente da loro.

Le sonde JTAG

Di solito i fornitori di hardware lo faranno affermano di supportare il McCraigor Wiggler o qualche altra sonda JTAG orribilmente costosa. Ciò significa che sei da solo se non usi una sonda JTAG "non supportata" (dal fornitore)! Non significa che non funzionerà, ma significa che devi essere dannatamente sicuro di quello che stai facendo (voltaggio, comandi JTAG che invii e così via).

Strumenti

FLOSS per usare JTAG

GDB () può essere utilizzato insieme a questi in alcuni scenari (ad esempio OpenOCD).

"Economico "Sonde JTAG

Nota: a volte sentirai i termini debugger o emulatore per le sonde JTAG stesse.

  • AVR JTAGICE, Atmel - se stai utilizzando controller AVR, queste sono le sonde preferite
  • JTAGkey2 e amici, Amontec
  • PicoTAP, Gopel - anche il PicoTAP è stato regalato qualche tempo fa in un kit di apprendimento (con CD e simili)
  • esistono diverse soluzioni JTAG economiche di Olimex (in particolare utili se vai OpenOCD)
  • BusBlaster di Dangerous Prototypes
  • Ultimo ma non meno importante: se ti piace la saldatura: OpenJTAG
#3
+8
Igor Skochinsky
2013-06-19 21:35:57 UTC
view on stackexchange narkive permalink

Per capire la piedinatura JTAG, ci sono molti risultati su Google per "JTAG Finder". Ho anche la mia implementazione:

http://mbed.org/users/igorsk/code/JTAG_Search/

È per mbed ma ci ho provato per renderlo facilmente trasportabile (la versione originale era per una scheda Stellaris).

Ecco una citazione dal commento che descrive l'approccio di base:

  L'idea generale: 1) scegli 2 pin qualsiasi come TMS e TCK 2) usandoli, resetta TAP e poi sposta DR, osservando lo stato di tutti gli altri pin 3) per ogni pin che ha ricevuto qualcosa come un TAP ID (cioè il bit 0 è 1): 4) usando il pin come TDI, inserisci uno schema noto nel TAP 5) continua a spostarti e controlla il resto dei pin 6) se uno dei pin rimanenti ha ricevuto il modello, è TDO  
#4
+7
samuirai
2013-06-19 18:54:25 UTC
view on stackexchange narkive permalink

Ho creato un video in cui ho identificato una possibile connessione JTAG con un multimetro. Ecco un'immagine che mostra quali pin sono collegati e corrisponde a un pinout JTAG standard per VCC e GND . Questa è un'indicazione che potrebbe essere JTAG, anche se non deve esserlo.

example JTAG connector



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...