Términos JTAG, SWD, EDBG, ICSP, ISP

JTAG, SWD, EDBG, ICSP, ISP.

¿Puede alguien simplemente explicar sus diferencias?

Por ejemplo, si el depurador EDBG TAMBIÉN puede programar flash, ¿por qué las placas Arduino tienen ISP y EDBG?

http://www.armlearning.com/wp-content/uploads/2017/10/4c10034e18f9380ff03a140a4835faff.jpg

Y en la imagen, ¿por qué escribieron "SWD (EDBG)"?

¿Cuál es el punto de escribir EDBG y escribirlo entre paréntesis?

¿Por qué ISP e ICSP tienen el mismo significado? ¿Por qué no sólo una abreviatura?

Y finalmente, ¿cuál es la relación de JTAG con todo esto?

Respuestas (2)

Los fabricantes de chips tienen diferentes nombres para las interfaces de programación que básicamente hacen lo mismo:

  • ISP: interfaz de programación para Atmel (ahora Microchip) AVR. Tipo SPI (MISO, MOSI, SCK, reinicio). Se puede utilizar para programación flash y depuración.
  • PDI: interfaz de programación más nueva para Atmel AVR (por ejemplo, Xmega). Utiliza dos cables (datos y reloj). Puede hacer lo mismo que ISP.
  • DebugWire: otra interfaz más de Atmel (esta usa solo un cable)
  • ICSP: interfaz de programación para la línea Microchip PIC de MCU
  • SWD - Serial Wire Debug - interfaz de programación para MCU con núcleos ARM Cortex-M (utiliza dos cables: datos y reloj)
  • JTAG: término muy genérico, interfaz similar a SPI utilizada para el escaneo de límites , también se puede usar para programar/depurar MCU (casi todos los proveedores tienen su propio protocolo, por lo que Cortex-M JTAG no es lo mismo que AVR JTAG o Blackfin JTAG)
  • Spy-Bi-Wire: otra interfaz de programación de dos cables más, esta es para MCU MSP430 de TI

Finalmente, EDBG que se explica aquí es probablemente un firmware de depuración que puede ejecutarse en una MCU (con USB) y depurar otra MCU (de modo que en realidad hay dos MCU en una placa de desarrollo). Como puede ver en el documento vinculado, admite múltiples estándares de interfaz de programación Atmel.

Sin embargo, lo bueno de JTAG es que puede conectar en cadena componentes de diferentes proveedores, por lo que se puede usar un solo conector para programarlos todos (ya que el software suele ser incompatible, aunque no al mismo tiempo).

Y finalmente, ¿cuál es la relación de JTAG con todo esto?

Las placas Arduino basadas en Atmega328P no son compatibles con JTAG. Debe pasar a los chips más grandes ('1284P, 2560, por ejemplo) para eso.