¿Qué es un JTAG?


30

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


44
Hay algunas gemas útiles ocultas en esta pregunta .
David

2
Le di a la morada un +1. Además, JTAG a veces se usa incorrectamente como un verbo que significa, genéricamente, "depurar / probar" una cosa. Una persona que "JTAG está haciendo algo" puede estar usando un protocolo diferente que el fabricante del dispositivo ha superpuesto con los pines físicos JTAG (es decir, SWD). Puede SWD o JTAG, pero no ambos. Sin embargo, nadie SWD's ("swoods"?) Sus dispositivos.
Jon

Sí, puedes programar con JTAG
Snoop

Respuestas:


21

Es como USB, SPI, I2C y otros "buses", y tiene varios usos populares, sin limitarse a:

  • Una en particular es la prueba de silicio antes de que se invierta demasiado en cada parte, por ejemplo, mientras un chip todavía está en la oblea, puede verificar la mayor parte de la parte. Por supuesto, cortar la oblea puede causar daños, por lo que desea volver a realizar la prueba, pero tal vez lo haga antes de empacar, tal vez después.

  • Puede usarlo para escanear límites en tableros. Puede tomar una placa en una línea de producción (siempre que la placa tenga que estar diseñada correctamente y un porcentaje de los chips tiene que soportar esto), pero puede hacer pruebas de conectividad a baja velocidad, estimular el pin en un extremo de un trazo y escanear otro partes para ver si están o no conectadas según el diseño de la placa.

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

Es una forma genérica de permitirle aislar cosas en la cadena a la que desea enviar una serie de bits u obtener una serie de bits, de manera que cada cosa con la que quiera hablar pueda diseñarse para varios números de bits de un número pequeño a un número grande. Para un depurador, naturalmente, debería escribir o leer desde un elemento del tamaño de un registro en su chip, tal vez un registro de 16 bits o 32 bits. Pero para las pruebas de silicio o placa, su cadena de escaneo puede ser decenas de bits. Cada cosa individual que aborde puede variar en tamaño, si lo desea, de cualquier otra cosa, lo que lo convierte en un autobús muy versátil con un número relativamente pequeño de pines que es atractivo para este tipo de casos de uso.

Quizás debido a la popularidad de la depuración de software, ahora tienen algunas soluciones de dos pines para ahorrar en el recuento de pines para microcontroladores y quizás otros lo adopten, quizás no.


¿Hay aspectos técnicos de JTAG que lo prestan para estos usos, o es solo por razones históricas?
Owen

Bueno, lee el artículo de Wikipedia. Mi opinión es porque ya estaba allí y conectado a las placas y chips, y porque era lo suficientemente flexible como para admitir otros usos, y al menos algunos ya tenían herramientas en su lugar, alguien debe haber dicho 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 en programación de circuitos, pero gracias a las instrucciones FTDI MPSSE y al éxito de FTDI en general con todo lo relacionado con USB, las herramientas jtag de bajo costo ahora están ampliamente disponibles.
old_timer

10

JTAG era originalmente una interfaz utilizada para probar PCB después del ensamblaje. Las líneas IO en los chips podrían controlarse y leerse a través de los puertos JTAG, lo que permite realizar una secuencia de prueba de la placa. Más tarde, también comenzó a usarse como una interfaz de programación y depuración. La funcionalidad disponible a través de JTAG dependerá del IC particular con el que esté tratando.

Una ventaja de JTAG sobre la mayoría de las otras interfaces de programación es que los dispositivos pueden conectarse en cadena. Entonces, un puerto JTAG puede servir para programar / depurar / probar múltiples dispositivos (aunque recomendaría diseñar sus sistemas para que diferentes marcas de chips se puedan dividir en diferentes cadenas, mientras que el protocolo JTAG de bajo nivel está bastante estandarizado, desafortunadamente las herramientas que necesita) para programar / depurar los chips no son).


9

JTAG es un término un tanto extraño. Para comenzar, el término puede especificar un conector y un protocolo específicos, compuestos por una señal de reloj (TCK), selección de modo (TMS) y entrada / salida de datos (TDI / TDO). Esto comprende una red de dispositivos, donde el TDO de cada dispositivo está conectado al TDI del siguiente dispositivo en una denominada cadena de exploración. TMS se utiliza para poner todos los dispositivos simultáneamente en varios modos .

Los dispositivos en la cadena de escaneo están típicamente conectados como un gran registro de desplazamiento compuesto de registros en cada dispositivo individual. Cuando los dispositivos están en el estado SHIFT_IR o SHIFT_DR, se 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 cambia un valor, el modo UPDATE_IR o UPDATE_DR se puede activar configurando TMS adecuadamente mientras se alterna TCK. En este punto, el valor desplazado al registro "surte efecto". Por ejemplo, cambiar varias secuencias al IR de un FPGA y hacer la transición a UPDATE_IR hará que el FPGA ingrese a varios modos, como configuración, lectura, tiempo de ejecución normal o acceso a registros de usuario específicos y primitivas específicas de JTAG instanciadas en el diseño.

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


4

JTAG define un protocolo en serie y algunos comandos para permitir el acceso a registros internos dentro de circuitos integrados complejos. Esto permite que un probador obtenga observabilidad y capacidad de control de manera estándar con pocos pines.

El uso original era para 'escaneo de límites', donde todos los pines de E / S podían leerse y controlarse mediante un gran registro de desplazamiento que rodea el chip. Sin embargo, se aumentó rápidamente para agregar más registros de desplazamiento para acceder a los componentes internos del chip, incluidas las memorias.

Raramente golpea JTAG, el acceso generalmente es a través de bibliotecas, también conocidas como controladores, suministradas por el fabricante de IC y utilizadas por el sistema de prueba y el adaptador de acceso de prueba.


¿Entonces el chip realmente necesita soportar un JTAG tanto por hardware como por software?
UnTraDe

@UnTraDe No, el chip admite JTAG en hardware y puede en software (por ejemplo, un 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 se usarían para interactuar con dispositivos a través de JTAG tendrían soporte de software y hardware (software en una computadora y hardware en términos de un programador JTAG conectado a esa computadora)
ζ--

3

Existe lo que JTAG 'significa' y existe lo que JTAG 'es'. Como otros han señalado JTAG 'es' una interfaz de bus estándar de la industria para la fabricación de pruebas, como en J Øint T est A cción G rupo.

Lo que JTAG 'significa' para un desarrollador de software integrado es la interfaz de depuración en el SoC / microprocesador para la depuración externa del software integrado que se ejecuta en el chip. Casi todas las CPU / SoC en el mercado usan la interfaz JTAG no solo para pruebas de fabricación, sino también para soporte de depuración de software. Encontrará una interfaz JTAG en todo, desde CPU de clase de servidor x86 hasta enrutadores WiFi domésticos de menos de $ 50. Con el hardware de interfaz correcto y el software adecuado, estas interfaces le otorgarán la capacidad de leer / escribir memoria, establecer puntos de interrupción y código de un solo paso.

La clave, por supuesto, es obtener el hardware y el software correctos. Aunque la interfaz JTAG básica está estandarizada, es posible que las funciones de depuración de software específicas disponibles en un dispositivo no lo estén. JTAG es como TCP / IP. Existe en el medio de la pila de aplicaciones. Necesita la capa física correcta para comunicarse con el equipo (es decir, ¿qué quiere decir que esta cosa usa 10-Base-2?!?!?), Y necesita el software de aplicación correcto encima (¿qué quiere decir que necesito un Gopher? ¡¿¡¿¡¿cliente?!?!?!). Sin embargo, la fortaleza del ecosistema ARM ha llevado a cierto grado de estandarización allí (ver OpenOCD).

También preguntaste sobre el uso de JTAG para programar flash. Sí, algunos programas lo usan también para ese propósito. El SoC puede proporcionar funciones JTAG para leer / escribir desde espacios de direcciones de memoria de la CPU, puede proporcionar acceso directo a controladores flash y, como mínimo, JTAG proporciona acceso sin formato de bajo nivel a los pines de E / S en el borde del chip (esto fue 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, 'escaneo de límites JTAG'). Cualquiera de estas instalaciones podría ser utilizado por programadores inteligentes para manejar las señales necesarias para reprogramar un chip flash en caso de que un dispositivo se "bloquee" accidentalmente.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.