Programmers

Programmers#

The hardware that flashes chips. A programmer sits between the operator’s laptop (USB) and the target chip (JTAG, SWD, SPI, UART, ICSP); it converts a host-side image into the right electrical sequence for the target’s programming mode. Some programmers are also debuggers (gdb-server on one end, JTAG / SWD on the other); the operator usually wants both in one tool.

Programmers#

Programmer

Targets

Note

ST-Link V2 / V3

STM32, STM8, and (with OpenOCD) most ARM Cortex-M

Built into every STM32 Discovery and Nucleo board; cheap clones at $3. The operator’s default ARM debugger.

J-Link (SEGGER)

Almost every ARM and RISC-V part

The professional standard. Wide target support, proprietary firmware. Edu version is cheap for non-commercial use.

BlackMagic Probe

ARM Cortex-M, RISC-V (limited)

Built-in gdb server; target extended-remote directly to it, no OpenOCD needed.

DAPLink / CMSIS-DAP

ARM Cortex-M

Arm’s open standard; runs on many cheap boards (and even on a Raspberry Pi Pico via picoprobe).

CH341A

SPI flash, I2C EEPROM

$3 dongle. Pairs with a SOIC-8 clip for in-circuit flash dumping. The operator’s first reach for firmware extraction.

USBasp

AVR (ATmega, ATtiny) via ICSP

$5 dongle for AVR development; works with avrdude.

Atmel-ICE

AVR, SAM (Cortex-M)

Microchip’s professional AVR / SAM debugger.

Bus Pirate

SPI, I2C, UART, JTAG (limited), 1-Wire

Multi-protocol probe; cheap, well-documented, and a common starter tool.

FT2232H breakout

SPI, I2C, JTAG, UART (any two of these at once)

Workhorse for custom programming setups; programmable with ftdi_eeprom to look like a J-Link, a generic JTAG adapter, or a USB-UART.

JTAGulator

Unknown JTAG / UART pinouts

The operator’s first move on an unknown header; brute-forces pin assignments against IDCODE.

Raspberry Pi Pico (picoprobe)

ARM Cortex-M via SWD

A $4 Pico flashed with picoprobe firmware is a fully capable CMSIS-DAP debugger.

esptool.py (USB-UART)

ESP8266, ESP32 family

Espressif’s flashing tool over a USB-UART adapter. No separate programmer needed; the chip itself enters bootloader mode by holding BOOT low at reset.

References#