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.

Function

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.

Types

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.)
 Development programmers (usually single-programming site) for first article development and small-series production.
 Pocket programmers for development and field service.
 Specialized programmers for certain circuit types only, such as FPGA, microcontroller, and EEPROM programmers.

History

Regarding old PROM programmers, as the many programmable devices have different voltage requirements, every pin driver must be able to apply different voltages in a range of 025 Volts.
But according to the progress of memory device technology, recent flash memory programmers do not need high voltages.

In the early days of computing, booting mechanism was a mechanical devices usually consisted of switches and LEDs. It means the programmer was not an equipment but a human, who entered machine codes one by one, by setting the switches in a series of "on" and "off" positions. These positions of switches corresponded to the machine codes, similar to today's assembly language.
Nowadays, EEPROMs are used for bootstrapping mechanism as BIOS, and no need to operate mechanical switches for programming.

Manufacturers
For each vendor's web site, refer to "External links" section.
Batronix
BPM Microsystems
DiagProg4: CodiProg
Xeltek Inc.
Conitec Datasystems
MCUmall Electronics Inc.
Data I/O
Elnec
DediProg Technology Co.,Ltd

Hi-Lo System Research
Phyton, Inc.

See also
Off-line programming
In-system programming
Debug port
JTAG interface
Common Flash Memory Interface
Open NAND Flash Interface Working Group
Atmel AVR#Programming interfaces
PIC microcontroller#Device programmers
Intel HEX – ASCII file format
SREC – ASCII file format
ELF – Binary file format
COFF – Binary file format
Hardware description language

References

External links
Technical information
JEDEC - Memory Configurations: JESD21-C
JEDEC - Common Flash Interface (CFI) Specification, JESD68.01, September 2003.
Intel - Common Flash Interface (CFI) and Command Sets
IEEE Std 1532-2002 (Revision of IEEE Std 1532-2001) - IEEE Standard for In-System Configuration of Programmable Devices
What is the IEEE 1532 Standard?  Keysight Technologies
JEDEC - STANDARD DATA TRANSFER FORMAT BETWEEN DATA PREPARATION SYSTEM AND PROGRAMMABLE LOGIC DEVICE PROGRAMMER: JESD3-C, Jun 1994
JEDEC - JC-42 Solid State Memories

Manufactures
BPM Microsystems
Batronix GmbH & Co. KG
Xeltek Inc.
Conitec Datasystems Inc.
Data I/O Corporation
Elnec s.r.o.
Dediprog
Minato Holdings Inc.
Hi-Lo System Research Co. Ltd.
Phyton, Inc.
halec

Computer engineering
Integrated circuits
Non-volatile memory
Gate arrays