1
\$\begingroup\$

JTAG, SWD, EDBG, ICSP, ISP .

Can someone simply explain their differences.

For example if EDBG debugger can ALSO program flash, why Arduino boards have both ISP and EDBG ?

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

And in picture, why they wrote "SWD(EDBG)" ?

Whats the point of writing EDBG and writing it in paranthesis ?

Why ISP and ICSP have the same meaning ? Why not only one abbreviation ?

And finally, what is the relationship of JTAG with all this ?

\$\endgroup\$
1
\$\begingroup\$

Chipmakers have different names for programming interfaces that all basically do the same thing:

  • ISP - programming interface for Atmel (now Microchip) AVRs. SPI-like (MISO, MOSI, SCK, reset). It can be used for flash programming and debugging.
  • PDI - newer programming interface for Atmel AVRs (eg. Xmega). Uses two wires (data and clock). Can do the same as ISP.
  • DebugWire - yet another interface from Atmel (this one uses only a single wire)
  • ICSP - programming interface for Microchip PIC line of MCUs
  • SWD - Serial Wire Debug - programming interface for MCUs with ARM Cortex-M cores (uses two wires - data and clock)
  • JTAG - very generic term, SPI-like interface used for boundary scan, can also be used for programming/debugging MCUs (almost every vendor has its own protocol, so Cortex-M JTAG is not the same as AVR JTAG or Blackfin JTAG)
  • Spy-Bi-Wire - yet another two wire programming interface, this one is for TI's MSP430 MCUs

Finally EDBG that is explained here is most likely a debugger firmware that can run on one MCU (with USB) and debug another MCU (so that there are actually two MCUs on a development board). As you can see in the linked document it supports multiple Atmel programming interface standards.

\$\endgroup\$
  • \$\begingroup\$ The nice thing about JTAG is though that you can daisy-chain components from different vendors, so a single connector can be used to program all of them (as the software is usually incompatible, not at the same time though). \$\endgroup\$ – Simon Richter Dec 13 '18 at 22:35
0
\$\begingroup\$

And finally, what is the relationship of JTAG with all this ?

The Atmega328P-based Arduino boards do not support JTAG. You need to move to the larger chips ('1284P, 2560 for example) for that.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.