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".
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