Debugging with SWD vs JTAG

A quick question about SWD vs JTAG…is there a functionality difference between the TMS/TCK/TDI/TDO/TRST JTAG interface and the SWDIO/SWCLK SWD interface?

More detail: I used the programmer shield with a Blackmagic Probe and it worked great. Then I got out the breadboard and only connected 3.3, RST, GND, TMS, and TCK in a SWD configuration and I noticed no change in functionality–it still worked great. Finally I tweaked the GPIO pin remap in main.cpp to disable remapping for JTAG but keep the remapping for the SWD pins, and again I noticed no difference–except that I was able to use D3-D5 to control an LED with Tinker while still debugging.

I’m just curious if a debugging guru out there might know if I would be losing something by switching to the SWD-only interface. It would be great to be able to get a bunch of pins back while retaining the ability to step through code! :grinning:

I’m don’t think so as SWD is to exactly do what you noticed which is to save pins.

But that said, there might be some other implications so let’s see what others have to say :smiley:

Thanks for the feedback. I’ve not run into any issues using it, and it looks like someone has made a user-friendly way to activate this that has been/will be rolled into the firmware. https://github.com/spark/core-firmware/pull/337

Just to save others from clicking back-and-forth with github, see this topic for details:

I’ve not found any limitations in using SWD in 6 months of debugging. I get the impression that SWD is JTAG re-encoded over a single wire.