34 votos

¿Qué es un JTAG?

Soy bastante nuevo en los sistemas embebidos, y sigo viendo este término usado todo el tiempo, pero no puedo entender bien lo que es. Una búsqueda rápida en Internet da como resultado esta página de Wikipedia: https://en.wikipedia.org/wiki/Joint_Test_Action_Group que lo describen como una especie de protocolo de depuración. Pero en otros contextos se utiliza como si fuera capaz de programar la memoria de un chip como un programador. ¿Qué es?

4 votos

Hay algunas joyas útiles escondidas en esta pregunta .

2 votos

He dado a dwelch un +1. Además, JTAG es a veces mal utilizado como un verbo que significa, genéricamente, "depurar/probar" una cosa. Una persona "JTAG'ing algo" en realidad puede estar utilizando un protocolo diferente que el fabricante del dispositivo ha superpuesto con los pines JTAG físicos (es decir, SWD). Puedes hacer SWD o JTAG, pero no ambos. Sin embargo, nadie SWD ("swoods") sus dispositivos.

0 votos

Sí, puedes programar con JTAG

22voto

Bartosz Radaczyński Puntos 7160

Es como el USB, el SPI, el I2C, y otros "buses", y tiene un número de usos populares, no limitados a:

  • Una de ellas es la prueba del silicio antes de que se invierta demasiado en cada pieza, por ejemplo, mientras un chip está todavía en la oblea se puede comprobar la mayor parte de la pieza. Es cierto que al cortar la oblea se pueden producir daños, por lo que hay que volver a probarla, pero tal vez se haga antes o después del embalaje.

  • Puedes usarlo para hacer un escaneo de límites en los tableros. Puede tomar una placa en una línea de producción (concedido la placa tiene que ser diseñada correctamente y un cierto porcentaje de los chips tienen que soportar esto) pero puede hacer pruebas de conectividad de baja velocidad, estimular el pin en un extremo de una traza y escanear otras partes para ver que están o no están conectadas por el diseño de la placa.

  • Dado que los chips ya tienen estos pines dedicados, ¿por qué no, para los procesadores, utilizar esa misma interfaz como una forma de hablar con un depurador en el chip (OCD), diseñar algo en el procesador y permitir que se hable a través de jtag.

Es una forma genérica de permitirte aislar cosas en la cadena a las que quieres enviar una serie de bits o de las que quieres obtener una serie de bits, de forma que cada cosa con la que quieres hablar puede ser diseñada para varios números de bits, desde un número pequeño hasta un número grande. Para un depurador, naturalmente, tendrías que escribir o leer de una cosa del tamaño de un registro en tu chip - tal vez un registro de 16 bits o 32 bits. Pero para las pruebas de silicio o de la placa su cadena de exploración podría ser de docenas de bits. Cada cosa individual a la que te diriges puede variar en tamaño, si quieres, de cualquier otra cosa, haciendo de este un bus muy versátil con un número relativamente pequeño de pines que es atractivo para este tipo de casos de uso.

Tal vez debido a la popularidad para la depuración de software que ahora tienen algunas soluciones de dos pines para ahorrar en el número de pines para los microcontroladores y tal vez otros adoptarán que, tal vez no.

0 votos

¿Existen aspectos técnicos de JTAG que se presten a estos usos, o es sólo por razones históricas?

0 votos

Pues lee el artículo de la wikipedia. Mi opinión es que como ya estaba ahí y cableado en las placas y chips, y como era lo suficientemente flexible como para soportar otros usos, y al menos algunos ya tenían herramientas, alguien debió decir que por qué no usarlo para estas otras cosas. Creo que su flexibilidad frente al número de pines lo hace muy atractivo. Existen y siguen existiendo otras soluciones para depuradores o programación en circuito, pero gracias a las instrucciones FTDI MPSSE y al éxito de FTDI en general con todo lo relacionado con USB, las herramientas jtag baratas están ahora ampliamente disponibles.

11voto

Peter Green Puntos 1888

JTAG era originalmente una interfaz utilizada para probar las placas de circuito impreso después del montaje. Las líneas IO de los chips podían controlarse y leerse a través de los puertos JTAG, lo que permitía realizar una secuencia de prueba de la placa. Más tarde, comenzó a utilizarse también como interfaz de programación y depuración. La funcionalidad disponible a través de JTAG dependerá del CI concreto con el que se trate.

Una de las ventajas de JTAG sobre la mayoría de las otras interfaces de programación es que los dispositivos pueden ser encadenados. Así que un puerto JTAG puede servir para programar/depurar/probar múltiples dispositivos (aunque yo aconsejaría diseñar tus sistemas de manera que diferentes marcas de chip puedan ser divididas en diferentes cadenas, mientras que el protocolo JTAG de bajo nivel está bastante estandarizado, desafortunadamente las herramientas que necesitas para programar/depurar los chips no lo están).

9voto

BaronGrivet Puntos 61

JTAG es un término algo impar. Para empezar, el término puede especificar un conector y un protocolo concretos, compuestos por una señal de reloj (TCK), una selección de modo (TMS) y una entrada/salida de datos (TDI/TDO). Se trata de una red de dispositivos, en la que el TDO de cada uno de ellos se conecta al TDI del siguiente, en lo que se denomina cadena de exploración. El TMS se utiliza para poner todos los dispositivos simultáneamente en varios modos .

Los dispositivos de la cadena de exploración suelen estar conectados como un gran registro de desplazamiento compuesto por registros en cada dispositivo individual. Cuando los dispositivos están en el estado SHIFT_IR o SHIFT_DR, conectan a la cadena de exploración uno de los dos registros temporales: Un registro de instrucciones y un registro de datos.

Una vez que se ha introducido un valor, se puede activar el modo UPDATE_IR o UPDATE_DR ajustando TMS adecuadamente mientras se conmuta TCK. En este momento, el valor introducido en el registro "tiene efecto". Por ejemplo, si se introducen varias secuencias en el IR de una FPGA y se pasa a UPDATE_IR, la FPGA entrará en varios modos como configuración, lectura, tiempo de ejecución normal, o accederá a registros de usuario específicos y a primitivas específicas de JTAG instanciadas en el diseño.

Del mismo modo, los estados de captura se pueden utilizar para "leer" un valor del dispositivo y ponerlo en el IR o DR, para ser desplazado a través de TDO y finalmente leído por el programador JTAG.

5voto

user44635 Puntos 4308

JTAG define un protocolo en serie, y algunos comandos, para permitir el acceso a los registros internos de los circuitos integrados complejos. Esto permite a un probador obtener observabilidad y controlabilidad de manera estándar utilizando pocos pines.

El uso original era para el "escaneo de límites", donde todos los pines de E/S podían ser leídos y manejados por un gran registro de desplazamiento que rodea el chip. Sin embargo, rápidamente se amplió para añadir más registros de desplazamiento para acceder a las partes internas del chip, incluidas las memorias.

Rara vez se hace un bit-bang JTAG, el acceso suele ser a través de librerías, también conocidas como drivers, suministradas por el fabricante del CI, y utilizadas por el sistema de prueba y el adaptador de acceso a la prueba.

0 votos

¿Así que el chip tiene que soportar un JTAG tanto por hardware como por software?

0 votos

@UnTraDe No, el chip soporta JTAG en hardware y puede hacerlo en software (por ejemplo, una FPGA puede exponer algunas interfaces entre JTAG y el diseño del usuario), pero no es necesario que tenga soporte de software en el chip. Las herramientas que uno utilizaría para interactuar con los dispositivos a través de JTAG tendrían tanto soporte de software como de hardware (software en un ordenador, y hardware en términos de un programador JTAG conectado a ese ordenador)

3voto

Sauvik De Puntos 406

Está lo que "significa" JTAG y está lo que "es" JTAG. Como otros han señalado JTAG "es" una interfaz de bus estándar de la industria para las pruebas de fabricación, como en J oint T es A cción G roup.

Lo que JTAG "significa" para un desarrollador de software embebido es la interfaz de depuración en el SoC/microprocesador para la depuración externa del software embebido que se ejecuta en el chip. Casi todas las CPU/SoC del mercado utilizan la interfaz JTAG no sólo para las pruebas de fabricación, sino para el soporte de depuración del software. Encontrarás una interfaz JTAG en todo, desde CPUs x86 de clase servidor hasta routers WiFi domésticos de menos de 50 dólares. Con el hardware de interfaz adecuado, y el software correcto, estas interfaces le otorgarán la capacidad de leer/escribir memoria, establecer breakpoints y código de un solo paso.

La clave, por supuesto, es conseguir el hardware y el software adecuados. Aunque la interfaz básica de JTAG está estandarizada, las funciones específicas de depuración del software disponibles en un dispositivo pueden no estarlo. JTAG es como TCP/IP. Existe en medio de la pila de aplicaciones. Necesitas la capa física adecuada para comunicarte con el equipo (por ejemplo, ¿qué quieres decir con que esta cosa utiliza 10-Base-2?!?!?), y necesitas el software de aplicación adecuado por encima (¡¿qué quieres decir con que necesito un cliente Gopher?!?!). Sin embargo, la fuerza del ecosistema ARM ha llevado a un cierto grado de estandarización allí (véase OpenOCD).

También preguntaste sobre el uso de JTAG para programar la flash. Sí, algunos programas lo utilizan también para ese fin. El SoC puede proporcionar facilidades JTAG para leer/escribir desde los espacios de direcciones de la memoria de la CPU, puede proporcionar acceso directo a los controladores de la flash, y como mínimo JTAG proporciona acceso crudo de bajo nivel a los pines de E/S en el borde del chip (este era el propósito original de JTAG, para permitir la prueba de continuidad de las interconexiones de chip a chip durante la prueba de fabricación, es decir, 'JTAG boundary scan'). Cualquiera de estas facilidades podría ser utilizada por programadores inteligentes para conducir las señales necesarias para reprogramar un chip flash en caso de que un dispositivo sea accidentalmente "brickeado".

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X