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; |
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 |
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 |
JTAGulator |
Unknown JTAG / UART pinouts |
The operator’s first move on an unknown header;
brute-forces pin assignments against |
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 |