Depuración JTAG vs SWD

Después de hojear este artículo , me pregunto cuáles son los beneficios de la depuración de SWD sobre la depuración de JTAG.

Entiendo que SWD usa menos cables/pines, ocupa menos espacio, etc. Pero, ¿cómo funciona en términos de rendimiento, características y costo de los dispositivos programadores/depuradores de hardware? ¿Se puede seguir rompiendo/pausando el código y paso a paso en IDE como Eclipse?

¿Se puede programar un chip ARM usando la interfaz SWD, como creo que se puede hacer en JTAG?

Los chips basados ​​en ARM con los núcleos más recientes (Cortex, por ejemplo) se pueden programar y depurar a través de SWD.
@BPete: Descubrí que con SWD es difícil depurar chips basados ​​en ST que usan el modo de suspensión; nuestras placas actuales no tienen los pines disponibles para JTAG, pero me preguntaba si JTAG podría ser mejor en ese sentido.
Este (SWD) se parece un poco a la interfaz Spy Bi-Wire que TI puso en un subconjunto de sus procesadores MSP430. Es similar a JTAG de 2 hilos (más alimentación y tierra) con SBWTCLK y SBWTDIO multiplexados en dos pines que no son GPIO (TEST y RST/NMI) en un dispositivo de ejemplo. Compatible con el kit de desarrollo EZ430. ¡Y (SBW) admite pasos y puntos de interrupción! No sé si los propios ARM de TI tienen la misma interfaz, pero sería interesante si hubiera suficientes puntos en común entre ellos para compartir herramientas de programación/depuración.
El enlace de su artículo está muerto, pero ¿quizás este era el artículo? arm.com/files/pdf/Serial_Wire_Debug.pdf
@GabrielStaples, también tu enlace está muerto. Aquí está la buena máquina wayback: web.archive.org/web/20190410232511/https://www.arm.com/files/…

Respuestas (4)

SWD debería poder programar el conjunto de chips ARM y además puede depurar y agregar puntos de interrupción. La otra cosa buena de SWD es que puede usar el visor de cables en serie para sus declaraciones de impresión para la depuración. Solo lo he usado con el compilador Keil.

Mire este enlace en el visor de cables en serie. keil.com/download/files/swv_on_cortex-m3.pdf

eléctricamente

  • Número de pines
    • JTAG requiere 4 líneas de señal
    • SWD solo requiere 2 líneas de señal
    • La interfaz JTAG de 2 cables especificada en IEEE 1149.7 elimina el número de pines, pero no parece estar ampliamente disponible en muchos circuitos integrados. También reduce el ancho de banda.
  • Topología
    • JTAG utiliza una configuración de cadena tipo margarita para sus líneas de datos entre chips. La velocidad de JTAG está limitada por el chip más lento de la cadena. Sin embargo, sus líneas de reinicio y borrado están conectadas (no encadenadas), lo que permite la interoperabilidad a través de SWDJ-DP (consulte la discusión a continuación).
    • JTAG de 2 hilos permite una topología en estrella, pero no se usa con frecuencia.
    • SWD permite topologías en estrella

funcionalmente

  • SWD es un protocolo específico de ARM diseñado específicamente para la microdepuración.
  • JTAG (Grupo de Acción de Pruebas Conjuntas) fue diseñado principalmente para pruebas de chips y placas. Se utiliza para escaneos de límites , verificando fallas en chips/tableros en producción. La depuración y flasheo de micros fue una evolución en su aplicación a lo largo del tiempo.
  • JTAG está en uso para múltiples arquitecturas de microcontroladores/procesadores además de ARM.

Discusión General

JTAG es más ampliamente compatible, a partir de 2017, por micros, programadores y líneas de producción que no son ARM. Los programadores para JTAG se pueden obtener a bajo precio en forma de fugas FT232H [*] y otros dispositivos de programación similares. Sin embargo, SWD tiene una clara ventaja en velocidad y otras áreas en la depuración de chips ARM.

Debido a la división en la naturaleza intencionada de JTAG en las pruebas y SWD en la depuración, ARM proporciona SWJ-DP (puerto de depuración jtag/cable serie) a través de su tecnología CoreSight que mapea los pines SWD en el reloj de JTAG y reinicia las líneas. SWJ-DP por lo tanto permite usar ambos protocolos en la misma conexión física aunque no necesariamente al mismo tiempo o con los mismos programadores ya que JTAG y SWD tendrían que ser multiplexados en el tiempo.

Referencias útiles

Pregunta anterior, pero ninguna de las respuestas aborda la comparación de rendimiento. Aunque el conjunto de características entre SWD y JTAG (cuando se usa un CoreSight DAP) es lo suficientemente similar, las secuencias SWD son aproximadamente un 10 % más cortas que las secuencias JTAG equivalentes.

No hay pérdida en el ancho de banda de datos en la mayoría de los casos (particularmente lecturas o escrituras de transmisión donde el ancho de banda es más importante).

Puede que sea un poco tarde para OP, pero tal vez sea útil para otras personas con la misma pregunta. Entonces, aquí vamos (experiencia personal): es posible programar y depurar (obtener memoria/registrar mapas, interrumpir, ejecutar desde un punto específico, etc.) con SWD. Usando Eclipse aquí con GDB a través de J-Link EDU, que cuesta ~ 50 euros. Hay algunos errores (restablecer el objetivo a través del depurador, a veces no se conecta ni obtiene mapas), pero es relativamente barato y utilizable, una vez que te familiarizas con sus peculiaridades.