2
\$\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\$

2 Answers 2

4
\$\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\$
1
  • 1
    \$\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\$ Commented Dec 13, 2018 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\$

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.