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