Search topics...

What in-circuit debuggers or programmers have you used? Which one do you like or hate?

0 upvotes
Practice with AISoon

(Technical core — what these tools are and what they do.)

In-circuit debuggers/programmers connect a host PC to the target microcontroller's on-chip debug interface so you can program flash and control/inspect a running CPU. The two dominant debug interfaces are:

  • JTAG — the classic IEEE 1149.1 multi-pin chain (TCK, TMS, TDI, TDO, TRST); also supports boundary scan.
  • SWD (Serial Wire Debug) — ARM Cortex's 2-pin alternative (SWDIO, SWCLK) that frees up pins while providing the same debug access; often paired with SWO for trace output.

Common probes/programmers:

  • SEGGER J-Link — very popular, fast, broad device support, and includes RTT (Real-Time Transfer) for high-speed printf-style logging over the debug link.
  • ST-Link — ST's probe, built onto every STM32 Nucleo/Discovery board.
  • CMSIS-DAP / DAPLink — ARM's open, vendor-neutral debug probe firmware standard.
  • MPLAB ICD / PICkit — Microchip's in-circuit debuggers/programmers for PIC/AVR/SAM.
  • Atmel-ICE — for AVR and SAM (Cortex-M) parts.

Core functions provided: programming/erasing flash, setting hardware and software breakpoints, single-stepping, halting/resuming the core, reading and writing CPU registers and memory, watchpoints/data breakpoints, and trace/logging via SWO or RTT. They integrate with GDB and IDEs (and OpenOCD as an open-source bridge). A good probe makes the edit-flash-debug loop fast and reliable; flaky/slow probes or poor driver support are the usual sources of frustration.