Che cos'è un JTAG?


30

Sono abbastanza nuovo per i sistemi embedded e continuo a vedere questo termine usato tutto il tempo, ma non riesco proprio a capire cosa sia. Una rapida ricerca online produce questa pagina di Wikipedia: https://en.wikipedia.org/wiki/Joint_Test_Action_Group che la descrive come una sorta di protocollo per il debug. Ma in altri contesti ha usato come se fosse in grado di programmare la memoria di un chip come un programmatore. Che cos'è?


4
Ci sono alcune gemme utili nascoste in questa domanda .
David

2
Ho dato a dwelch un +1. Inoltre, JTAG è talvolta usato in modo errato come verbo che significa, in generale, "eseguire il debug / testare" una cosa. Una persona "JTAG" sta effettivamente usando un protocollo diverso che il produttore del dispositivo ha sovrapposto ai pin fisici JTAG (ovvero SWD). Puoi SWD o JTAG, ma non entrambi. Nessuno dei SWD ("swoods"?), Tuttavia, i loro dispositivi.
Jon

Sì, puoi programmare con JTAG
Snoop

Risposte:


21

È come USB, SPI, I2C e altri "bus", e ha un numero di usi popolari, non limitato a:

  • Uno in particolare è nel test del silicio prima che venga investito troppo in ogni parte, ad esempio mentre un chip è ancora sul wafer è possibile controllare la maggior parte della parte. Concesso il taglio a dadini del wafer può causare danni, quindi si desidera provare di nuovo, ma forse lo si fa prima dell'imballaggio, forse dopo.

  • È possibile utilizzarlo per eseguire la scansione dei limiti sulle schede. Puoi prendere una scheda su una linea di produzione (ammesso che la scheda debba essere progettata correttamente e una percentuale dei chip debba supportare questo) ma puoi fare test di connettività a bassa velocità, stimolare il pin su un'estremità di una traccia e scansionare altri parti per vedere che sono o non sono collegati secondo il design della scheda.

  • Dato che i chip hanno già questi pin dedicati, perché no, per i processori, utilizzare la stessa interfaccia come modo per parlare con un debugger on chip (OCD), progettare qualcosa nel processore e consentire che venga parlato tramite jtag.

È un modo generico per consentire di isolare le cose sulla catena da cui si desidera inviare una serie di bit o da cui ottenere una serie di bit, in modo che ogni cosa con cui si desidera parlare possa essere progettata per vari numeri di bit da un numero piccolo a un numero grande. Per un debugger dovresti naturalmente scriverlo o leggerlo da una cosa di dimensioni di registro nel tuo chip - forse un registro a 16 bit o 32 bit. Ma per i test su silicio o scheda la catena di scansione potrebbe essere dozzina di bit. Ogni singola cosa a cui ti rivolgi può variare di dimensioni, se lo desideri, da qualsiasi altra cosa, rendendolo un bus molto versatile con un numero relativamente piccolo di pin che è attraente per questi tipi di casi d'uso.

Forse a causa della popolarità del debug del software, ora hanno alcune soluzioni a due pin per risparmiare sul conteggio dei pin per i microcontrollori e forse altri lo adotteranno, forse no.


Ci sono aspetti tecnici di JTAG che lo prestano a questi usi o sono solo per ragioni storiche?
Owen,

Bene leggi l'articolo di Wikipedia. La mia opinione è perché era già lì e cablato nelle schede e nei chip, e poiché era abbastanza flessibile da supportare altri usi, e almeno alcuni avevano già strumenti in atto, qualcuno deve aver detto perché non usarlo per queste altre cose. Penso che la sua flessibilità rispetto al numero di pin lo renda molto attraente. Esistono e continuano ad esistere altre soluzioni per i debugger o nella programmazione dei circuiti, ma grazie alle istruzioni FTDI MPSSE e al successo di FTDI in generale con tutto l'USB, gli strumenti jtag economici sono ora ampiamente disponibili.
old_timer

10

JTAG era in origine un'interfaccia utilizzata per testare i PCB dopo il montaggio. Le linee IO sui chip potrebbero essere controllate e lette tramite le porte JTAG consentendo l'esecuzione di una sequenza di test della scheda. Successivamente ha anche iniziato a essere utilizzato come interfaccia di programmazione e debug. Le funzionalità disponibili su JTAG dipenderanno dal particolare IC di cui ti stai occupando.

Un vantaggio di JTAG rispetto alla maggior parte delle altre interfacce di programmazione è che i dispositivi possono essere collegati in cascata. Quindi una porta JTAG può servire per programmare / eseguire il debug / testare più dispositivi (anche se consiglierei di progettare i vostri sistemi in modo che le diverse marche di chip possano essere suddivise in catene diverse, mentre il protocollo JTAG di basso livello è piuttosto standardizzato purtroppo gli strumenti necessari per programmare / eseguire il debug i chip non lo sono).


9

JTAG è in qualche modo un termine strano. Per iniziare, il termine può specificare un connettore e un protocollo specifici, composti da un segnale di clock (TCK), modalità di selezione (TMS) e dati in / out (TDI / TDO). Ciò comprende una rete di dispositivi, in cui il TDO di ciascun dispositivo è collegato al TDI del dispositivo successivo in una cosiddetta catena di scansione. TMS viene utilizzato per inserire contemporaneamente tutti i dispositivi varie modalità .

I dispositivi sulla catena di scansione sono in genere collegati come un grande registro a scorrimento composto da registri in ciascun singolo dispositivo. Quando i dispositivi si trovano nello stato SHIFT_IR o SHIFT_DR, si collegano alla catena di scansione uno dei due registri temporanei: un registro di istruzioni e un registro di dati.

Una volta spostato un valore, la modalità UPDATE_IR o UPDATE_DR può essere attivata impostando TMS in modo appropriato mentre si attiva / disattiva TCK. A questo punto, il valore spostato nel registro "diventa effettivo". Ad esempio, se si spostano varie sequenze nell'IR di un FPGA e si passa a UPDATE_IR, l'FPGA entrerà in varie modalità come configurazione, readback, runtime normale o accederà a registri utenti specifici e primitive specifiche di JTAG istanziate nella progettazione.

Allo stesso modo, gli stati di acquisizione possono essere utilizzati per "leggere" un valore dal dispositivo e inserirlo nell'IR o nel DR, per essere spostato attraverso TDO e infine letto dal programmatore JTAG.


4

JTAG definisce un protocollo seriale e alcuni comandi per consentire l'accesso ai registri interni all'interno di circuiti integrati complessi. Ciò consente a un tester di ottenere osservabilità e controllabilità in modo standard utilizzando pochi pin.

L'uso originale era per la "boundary scan", in cui tutti i pin I / O potevano essere letti e pilotati da un grande registro a scorrimento che circonda il chip. Tuttavia, è stato rapidamente aumentato per aggiungere ulteriori registri a scorrimento per accedere agli interni del chip, comprese le memorie.

Raramente bit-bang JTAG, l'accesso avviene generalmente tramite librerie, ovvero driver, fornite dal produttore dell'IC e utilizzate dal sistema di test e dall'adattatore di accesso al test.


Quindi il chip deve effettivamente supportare un JTAG sia hardware che software?
UnTraDe,

@UnTraDe No, il chip supporta JTAG nell'hardware e può nel software (ad esempio un FPGA può esporre alcune interfacce tra JTAG e il design dell'utente), ma non è necessario disporre di supporto software sul chip. Gli strumenti che si utilizzerebbero per interagire con i dispositivi tramite JTAG avrebbero supporto sia software che hardware (software su un computer e hardware in termini di un programmatore JTAG collegato a quel computer)
Mar--

3

C'è ciò che JTAG "significa" e c'è ciò che JTAG "è". Come altri hanno sottolineato JTAG 'è' un'interfaccia bus standard industriale per la produzione di test, come in J misto T est A zione G ruppo.

Ciò che JTAG "significa" per uno sviluppatore di software embedded è l'interfaccia di debug sul SoC / microprocessore per il debug esterno di software embedded in esecuzione sul chip. Quasi tutte le CPU / SoC sul mercato utilizzano l'interfaccia JTAG non solo per i test di produzione, ma anche per il supporto del debug del software. Troverai un'interfaccia JTAG su qualsiasi cosa, dalle CPU server x86 di classe server a router WiFi domestici da $ 50. Con l'hardware dell'interfaccia giusto e il software giusto, queste interfacce ti daranno la possibilità di leggere / scrivere memoria, impostare punti di interruzione e codice a passo singolo.

La chiave ovviamente è ottenere l'hardware e il software giusti. Anche se l'interfaccia JTAG di base è standardizzata, le specifiche funzionalità di debug del software disponibili in un dispositivo potrebbero non esserlo. JTAG è come TCP / IP. Esiste nel mezzo dello stack dell'applicazione. Hai bisogno del giusto livello fisico per comunicare con l'apparecchiatura (cioè cosa intendi con questa cosa 10-Base-2?!?!?), E hai bisogno del giusto software applicativo sopra di essa (cosa vuoi dire che ho bisogno di un Gopher cliente?!?!?!). Tuttavia, la forza dell'ecosistema ARM ha portato un certo grado di standardizzazione lì (vedi OpenOCD).

Hai anche chiesto di usare JTAG per programmare il flash. Sì, alcuni software lo usano anche a tale scopo. Il SoC può fornire strutture JTAG per leggere / scrivere dagli spazi degli indirizzi di memoria della CPU, può fornire accesso diretto ai controller flash e almeno JTAG fornisce un accesso di basso livello ai pin I / O sul bordo del chip (questo era lo scopo originale di JTAG, per consentire il test di continuità delle interconnessioni chip-chip durante il test di fabbricazione, ovvero "scansione del confine JTAG"). Ognuna di queste strutture potrebbe essere utilizzata da programmatori intelligenti per guidare i segnali necessari per riprogrammare un chip flash nel caso in cui un dispositivo venga accidentalmente "bloccato".

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.