Also known as: ISP, ICSP
In-system programming (ISP) is the practice of writing a microcontroller’s firmware while the chip remains soldered into its circuit board.1
Overview
Before ISP, a chip had to be removed and placed in a dedicated programmer. ISP instead uses a small debug interface on the board — SWD or JTAG on ARM Cortex-M parts, an SPI-based ICSP header on AVR/ATmega, or vendor schemes on PIC — so a programmer like ST-LINK, J-Link, or PICkit can flash and debug the device in place. The same interface usually allows single-step debugging and reading back memory.
Where it fits
ISP is the lowest-level way to get code onto a chip and is how a brand-new, blank MCU is first programmed — including installing a bootloader, after which routine updates can happen over USB instead. On an STM32 board, the SWD pins broken out next to the MCU are the ISP interface. It is the standard production and bring-up workflow for embedded systems.
Sources
-
In-system programming — Wikipedia, on programming chips in place. ↩