jtag cos'è?

come da titolo

spesso trovo sulle varie board (tipo: router, cornici digitale etc etc) sempre: la seriale, la jtag e qualche volta la gpio
grazie ad arduino ho capito cos'è la seriale.

ma la jtag? ho capito che può servire a recuperare hardware brickato... ma non ho capito come funziona.
vorrei approfondire la cosa in maniera elementare (vedi l'altro posto degli lcd).
consigli?

grazie

E' un protocollo standardizzato che serve per il debug dell'hardware.

Per info più specifiche, aspetta astrobeed :sweat_smile:

leo72:
E' un protocollo standardizzato che serve per il debug dell'hardware.
JTAG - Wikipedia

Per info più specifiche, aspetta astrobeed :sweat_smile:

non so quante volte ho letto wikipedia... nei vari forum quando c'è un hardware brickato la prima cosa che chiedono: "ha la jtag?"
...ma mi è parso di capire che bisogna conoscere davvero bene l'hardware a cui fare un eventuale debrick o cose del genere. non è facile insomma...

Perché col JTAG puoi avviare e fermare l'esecuzione del programma, cioè fare il trace delle istruzioni passo passo.
Ma ci vuole un programmatore apposito, vedi AVR Dragon o simili.

leo72:
Perché col JTAG puoi avviare e fermare l'esecuzione del programma, cioè fare il trace delle istruzioni passo passo.

tipo un debug? ma via jtag posso caricare un firmware?

Mi pare di sì. E' un accesso privilegiato a tutto l'hardware e quindi dovrebbe poter permettere anche la scrittura sulle memorie del microcontrollore.

Col JTAG in genere puoi riprogrammare il micro, fare debug, dei test, etc..
Serve sempre l'apposito programmatore
Ciao

flz47655:
Serve sempre l'apposito programmatore

Cosa intendi per "apposito"?
Ci vuole un programmatore ben studiato per QUEL tipo di hardware a cui fare test, debug etc etc? non posso prendere un qualsiasi programmatore?

Non esiste un programmatore universale completo, alcuni chip hanno delle estensioni proprietarie, ogni ambiente di sviluppo proprietario poi riconosce solamente i programmatori della casamadre in genere.
Comunque c'è un subset comune (JTAG IEEE Std 1149.1) che permette di fare diverse cose come la programmazione, i test, etc..
Nel più semplice dei casi è un semplice traslatore di livello con un qualche chip che gestisce la comunicazione USB
Ciao

flz47655:
Non esiste un programmatore universale completo, alcuni chip hanno delle estensioni proprietarie, ogni ambiente di sviluppo proprietario poi riconosce solamente i programmatori della casamadre in genere.
Comunque c'è un subset comune (JTAG IEEE Std 1149.1) che permette di fare diverse cose come la programmazione, i test, etc..
Nel più semplice dei casi è un semplice traslatore di livello con un qualche chip che gestisce la comunicazione USB
Ciao

adesso mi è più chiara la questione...

Sapevo che per usare la modalità jtag bastava un pc con porte parallela, un connettore parallelo ed un paio di resistenze.
Apparte questo la modalità Jtag e per lo più sempre bloccatta, perchè puoi cmq riflashare la nand del controllore(vedi console verde-bianca) e metterci il tuo software modificato.

Esistono programmatori anche con porta parallela, i più moderni ormai sono USB però, usano chip tipo i cypress in genere nelle versioni più economiche.
JTag non mi sembra che in genere è bloccato, al limite il chip è protetto da lettura, ovvero non puoi leggere la sua memoria ma puoi scriverla.

Per farti un esempio anche l'ATMEGA 644 ha il JTAG

Ciao

flz47655:
Esistono programmatori anche con porta parallela, i più moderni ormai sono USB però, usano chip tipo i cypress in genere nelle versioni più economiche.
JTag non mi sembra che in genere è bloccato, al limite il chip è protetto da lettura, ovvero non puoi leggere la sua memoria ma puoi scriverla.

Per farti un esempio anche l'ATMEGA 644 ha il JTAG

Ciao

Ti assicuro che è bloccata anche la scrittura e pur sempre M$ cosa pretendi? :grin:

Madwriter:
Ti assicuro che è bloccata anche la scrittura e pur sempre M$ cosa pretendi? :grin:

Ma tu parli di una cosa specifica, l'Xbox. Questo dipende da scelte del costruttore.

flz47655:
Per farti un esempio anche l'ATMEGA 644 ha il JTAG

Anche il SAM3X della DUE e l'Atmega2560 della MEGA ce l'hanno.

Ovvio che il sistema per bloccarla c'è, potrebbe essere anche qualche jumper da collegare nel più banale dei casi o proprio il chip che ha disattivato l'interfaccia JTAG o ne utilizza un'altra, chi può dirlo.. ma perché ti interessa così tanto? ]:smiley:

come sopra, la JTAG è un programmatore con una serie di funzioni avanzate come il debug passo-passo del codice.

In pratica immagina di avere un boot-loader sotto steroidi in un chip a parte (e quindi spesso questo chip è protetto da scrittura, per evitare che l'user sminchi il tutto).

Normalmente il jtag è un componente esterno, poichè il protocollo è più o meno standardizzato, ma sulle board di developer spesso si trova anche "on chip" sulla scheda.

"la gpio" mi sorprendi: sta per General Purpose Input Output, e li ha anche arduino: sono i pin digitali!

@lesto: JTAG non è un programmatore, è un protocollo che viene usato per fare test e programmare i chip
praticamente tutti i micro/cpld/fpga lo supportano anche perché si usa per programmare e testare in un botto tutti i chip sulla scheda, i vari chip sono collegati tra loro (lo prevede il protocollo) e serve quindi un solo connettore sulla scheda

yep hai ragione, JTAG è uno standard (IEEE 1149)

Uppo questa domanda interessante.
Il 328 purtroppo non ha il jtag, ma la Mega si, quindi resteremmo in ambito arduinoco.
Qualcuno ha una guida, uno spunto, o voglia diretta di spiegare, come usarlo ?
una specie di blink per Arduino Mega con jtag, che consigliasse quale sw scaricare, quale programmatore usare, come diavolo fare il tutto.

Karma per tutti :slight_smile: