In System programmers are designed to program memory-based devices that are soldered to a target board.
A number of different types of Interface are used but the most common are SPI, I2C and JTAG.
With SPI and I2C interfaces a header plug or Tag-Connect target pad area are made available for the programming interface. These should not normally be driven by any circuitry on the target board to avoid contention when the programmer is connected.
Target memory programmed via a JTAG Interface are usually programmed directly from an on-board CPU via their data bus or SPI/I2C. In this case the external programmer communicates with the CPU by downloading a small programming monitor. The programmer then downloads the image to be programmed temporarily into on-board RAM. Under control of the target CPU and External ISP the image is then programmed into the on-board memory (usually Flash). See the section JTAG Programmers for more details of this programming method.