A programmer, device programmer, chip programmer, device burner, or PROM writer is a piece of electronic equipment that arranges written software or firmware to configure programmable non-volatile integrated circuits, called programmable devices. The target devices include PROM, EPROM, EEPROM, Flash memory, eMMC, MRAM, FeRAM, NVRAM, PLDs, PLAs, PALs, GALs, CPLDs, FPGAs, and microcontrollers.
Programmer hardware has two variants. One is configuring the target device itself with a socket on the programmer. Another is configuring the device on a printed circuit board.
In the former case, the target device is inserted into a socket (usually ZIF) on top of the programmer. If the device is not a standard DIP packaging, a plug-in adapter board, which converts the footprint with another socket, is used.
In the latter case, device programmer is directly connected to the printed circuit board by a connector, usually with a cable. This way is called on-board programming, in-circuit programming, or in-system programming.
Afterwards the data is transferred from the programmer into the device by applying signals through the connecting pins. Some devices have a serial interface
for receiving the programming data (including JTAG interface).
Other devices require the data on parallel pins, followed by a programming pulse with a higher voltage for programming the data into the device.
Usually device programmers are connected to a personal computer through a parallel port,
USB port,
or LAN interface.
A software program on the computer then transfers the data to the programmer,
selects the device and interface type, and starts the programming process to read/ write/ erase/ blank the data inside the device.
There are four general types of device programmers:
Automated programmers (multi-programming sites, having a set of sockets) for mass production. These systems utilize robotic pick and place handlers with on-board sites. This allows for high volume and complex output (such as laser marking, 3D inspection, Tape input/output, etc.