Podrías haber especificado el MCU pero como no lo hiciste, me atendré a los términos generales.
Generalmente, las interfaces JTAG vienen con un UART, es más lento, pero puede usar el JTAG para cargar un programa interm que está escribiendo, luego activar el UART y comenzar a transferir la información del UART al flash SPI
Esto es lo que dice el wiki en JTAG:
Los programadores JTAG también se utilizan para escribir software y datos en flash
memoria. Esto generalmente se hace usando el acceso al bus de datos como lo haría la CPU
uso, y en ocasiones es manejado en realidad por una CPU, pero en otros casos
Los chips de memoria tienen interfaces JTAG. Algunos depuración moderna
Las arquitecturas proporcionan acceso maestro de bus interno y externo sin
Necesidad de detener y hacerse cargo de una CPU. En el peor de los casos, suele ser
Es posible conducir señales de bus externo utilizando la exploración de límites
instalación.
Como cuestión práctica, al desarrollar un sistema integrado, emulando
El almacén de instrucciones es la forma más rápida de implementar el "debug".
ciclo "(editar, compilar, descargar, probar y depurar). [citación necesaria]
Esto se debe a que el emulador en circuito simula una instrucción.
La tienda se puede actualizar muy rápidamente desde el host de desarrollo a través de, por ejemplo,
USB. Usando un puerto UART en serie y un cargador de arranque para cargar firmware en
Flash hace que este ciclo de depuración sea bastante lento y posiblemente caro en
términos de herramientas; instalando firmware en Flash (o SRAM en lugar de
Flash) a través de JTAG es una solución intermedia entre estos extremos.
Aquí hay un ejemplo de para JTAG UARTS para STM32F's