¿Qué es un JTAG?

29

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

    
pregunta UnTraDe

5 respuestas

20

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

  • Uno en particular es en 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 hacer daño, por lo que debe hacer una prueba nuevamente, pero tal vez haga eso antes de empacar, tal vez después.

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

  • Ya que los chips ya tienen estos pines dedicados, por qué no, para los procesadores, use la misma interfaz como forma de hablar con un depurador en chip (OCD), diseñe algo en el procesador y permita que se pueda hablar a través de jtag.

Es una forma genérica de permitirle aislar cosas de la cadena a las 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 escribirlo o leerlo desde un chip del tamaño de un registro, tal vez un registro de 16 bits o 32 bits. Pero para pruebas de silicio o placa, su cadena de escaneo puede ser de decenas de bits. Cada cosa individual que dirija puede variar en tamaño, si lo desea, de cualquier otra cosa, lo que hace que este sea un bus muy versátil con un número relativamente pequeño de pines que sea atractivo para este tipo de casos de uso.

Tal vez debido a la popularidad de la depuración de software, ahora tienen algunas soluciones de dos pines para ahorrar en el conteo de pines para los microcontroladores y quizás otros adopten eso, tal vez no.

    
respondido por el old_timer
10

JTAG fue 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 permitiendo que se realice una secuencia de prueba de la placa. Más tarde, también comenzó a utilizarse como una interfaz de programación y depuración. La funcionalidad disponible en JTAG dependerá del IC en particular con el que esté tratando.

Una de las ventajas de JTAG sobre la mayoría de las otras interfaces de programación es que los dispositivos pueden conectarse en cadena. Por lo tanto, un puerto JTAG puede servir para programar / depurar / probar múltiples dispositivos (aunque recomendaría diseñar sus sistemas para que las 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 lo son).

    
respondido por el Peter Green
9

JTAG es un término un tanto extraño. Para comenzar, el término puede especificar un conector y protocolo específico, compuesto 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 llamada cadena de exploración. TMS se utiliza para colocar 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 por 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 desplaza un valor, el modo UPDATE_IR o UPDATE_DR se puede activar configurando el TMS de manera apropiada al alternar TCK. En este punto, el valor cambiado en el registro "tiene efecto". Por ejemplo, cambiar varias secuencias al IR de un FPGA y hacer la transición a UPDATE_IR hará que el FPGA ingrese en varios modos, como configuración, lectura, tiempo de ejecución normal o acceso a registros de usuarios específicos y primitivas específicas de JTAG ejemplificadas 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 cambiarlo a través de TDO y, finalmente, para que lo lea el programador JTAG.

    
respondido por el Andrey Akhmetov
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 una manera estándar usando pocos pines.

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

Raramente golpea JTAG, el acceso generalmente se realiza a través de bibliotecas, también conocidos como controladores, suministrados por el fabricante del IC y utilizados por el sistema de prueba y el adaptador de acceso de prueba.

    
respondido por el Neil_UK
3

Hay lo que JTAG 'significa' y está lo que JTAG 'es'. 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 est A ction G roup.

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 incorporado que se ejecuta en el chip. Casi todas las CPU / SoC del mercado utilizan la interfaz JTAG no solo para las pruebas de fabricación, sino también para el soporte de depuración de software. Encontrará una interfaz JTAG en todo, desde CPU de clase servidor x86 a 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 adecuados. A pesar de que la interfaz JTAG básica está estandarizada, las funciones de depuración de software específicas disponibles en un dispositivo pueden no estarlo. JTAG es como TCP / IP. Existe en el medio de la pila de aplicaciones. Necesitas la capa física adecuada para comunicarte con el equipo (es decir, ¿a qué te refieres con que esta cosa usa 10-Base-2?!?!?), Y necesitas el software de aplicación adecuado (¿qué quieres decir con que necesito un Gopher)? ¡¿¡¿¡¿cliente?!?!?!). Sin embargo, la fortaleza del ecosistema ARM ha conducido a cierto grado de estandarización allí (consulte OpenOCD).

También preguntaste sobre el uso de JTAG para programar flash. Sí, algunos programas también lo usan para ese propósito. 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 flash y, como mínimo, JTAG proporciona acceso directo 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, 'exploración de límites JTAG'). Cualquiera de estas facilidades podría ser utilizado por programadores inteligentes para manejar las señales necesarias para reprogramar un chip flash en caso de que un dispositivo sea accidentalmente "bloqueado".

    
respondido por el Tribal

Lea otras preguntas en las etiquetas