Template:Short description

File:NuProg-E2-wsocket.png
Engineering Universal Programmer with two sockets
File:Programmer conitec galep5.jpg
Pocket Programmer Galep-5 with a ZIF socket
File:NPP16-FrontSide-wso-wobg.png
Universal Gang Programmer with 16 sockets
File:BPM 3928 Automated Programming System.jpg
The 3928, with up to seven sites,  is made for programming large data devices, such as  MCUs, eMMC HS400, NAND, NOR and Serial Flash devices.  High-speed signals support devices up to 200 MHz and the latest eMMC HS400 modes with data transfer rates of 2.5 nanoseconds per byte.

In the context of installing firmware onto a device, a programmer, device programmer, chip programmer, device burner,<ref name="Muller 2003"/>Template:Rp or PROM writer<ref name="Cressler 2017"> Template:Cite book </ref> is a device that writes, a.k.a. burns, firmware to a target device's non-volatile memory.<ref name="Czerwinski 2013"> Template:Cite book </ref>Template:Rp

Typically, the target device memory is one of the following types: PROM, EPROM, EEPROM, Flash memory, eMMC, MRAM, FeRAM, NVRAM, PLD, PLA, PAL, GAL, CPLD, FPGA.

ConnectionEdit

File:Adafruit TinyISP AVR Programmer.jpg
JTAG Connector-based
On-Board Programmer
for AVR microcontroller
with USB Port interface

Generally, a programmer connects to a device in one of two ways.

InsertionEdit

In some cases, the target device is inserted into a socket (usually ZIF) on the programmer.<ref name="Mazidi 2017"/>Template:Rp If the device is not a standard DIP packaging, a plug-in adapter board, which converts the footprint with another socket, is used.<ref name="Edward 2006"> Template:Cite book </ref>Template:Rp

Cable & portEdit

In some cases, a programmer connects to a device via a cable to a connection port on the device. This is sometimes called on-board programming, in-circuit programming, or in-system programming.<ref name="IEEE-2532"> {{#invoke:citation/CS1|citation |CitationClass=web }} </ref><ref name="IEEE 1532 by agilent"> {{#invoke:citation/CS1|citation |CitationClass=web }} </ref><ref name="Jacobson 2012"> Template:Cite book </ref>

TransferEdit

Data is transferred from the programmer to the device as signals via connecting pins.

Some devices have a serial interface<ref name="Ong 2001"> Template:Cite book</ref>Template:Rp for receiving data (including JTAG interface).<ref name="Mazidi 2017"/>Template:Rp Other devices communicate on parallel pins, followed by a programming pulse with a higher voltage for programming the data into the device.<ref name="Ravichandran 2001"> Template:Cite book </ref>Template:Rp

Usually, a programmer is controlled via a connected personal computer through a parallel port,<ref name="Muller 2003"> Template:Cite book </ref>Template:Rp USB port,<ref name="Review TL866CS"> {{#invoke:citation/CS1|citation |CitationClass=web }} </ref> or LAN interface.Template:Cn A program on the controlling computer interacts with the programmer to perform operations such as configure install parameters and program the device,<ref name="Muller 2003"/>Template:Rp <ref name="IVF 1995"> Template:Cite book </ref>Template:Rp <ref name="YouTube-HowTo"> {{#invoke:citation/CS1|citation |CitationClass=web }} </ref><ref name="Minimum need to know">{{#invoke:citation/CS1|citation |CitationClass=web }}</ref>

TypesEdit

File:Sp 5004gp transp.png
A Gang Programmer with a Set of 4 Sockets.

There are four general types of programmers:

  1. Automated programmers often have multiple programming sites/sockets<ref name="gang by Oxford Dict">{{#invoke:citation/CS1|citation

|CitationClass=web }} </ref> for mass production.<ref name="Mazidi 2017">Template:Cite book</ref> Sometimes used with robotic pick and place handlers with on-board sites to support high volume and complex output such as laser marking, 3D inspection, tape input/output, etc.

  1. Development programmers usually have a single programming site; used for first article development and small-series production.<ref name="MiniPro TL866 Universal Programmer Review">

{{#invoke:citation/CS1|citation |CitationClass=web }} </ref>

  1. Pocket programmers for development and field service.<ref name="MiniPro TL866 Universal Programmer Review" /><ref name="Google Search Field-service">

{{#invoke:citation/CS1|citation |CitationClass=web }} </ref>

  1. Specialized programmers for certain circuit types only, such as FPGA,<ref name="FPGA Programmer">Template:Cite book

</ref> microcontroller,<ref name="Mazidi 2017" />Template:Rp and EEPROM programmers.<ref name="YouTube-HowTo" />

HistoryEdit

File:Universal Prom Programmer.jpg
Historical Programmer;
A shoebox size
File:78K0R Cool-It.jpg
Pocket-sized & USB Port interfaced "ICE for MCU" &
Flash memory Programmer

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 0Template:Endash25 Volts.<ref name="Godse 2008">Template:Cite book </ref>Template:Rp<ref name="Ball 2002"> Template:Cite book </ref>Template:Rp But according to the progress of memory device technology, recent flash memory programmers do not need high voltages.<ref name="Choi 2009"> Template:Cite journal </ref><ref name="EETIMES 2002"> {{#invoke:citation/CS1|citation |CitationClass=web }} </ref>

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.<ref name="DuCastel 2008"> Template:Cite book </ref>Template:Rp<ref name="PDP8"> {{#invoke:citation/CS1|citation |CitationClass=web }} </ref><ref name="Nova3"> {{#invoke:citation/CS1|citation |CitationClass=web }} </ref> Nowadays, EEPROMs are used for bootstrapping mechanism as BIOS, and no need to operate mechanical switches for programming.<ref name="Goel 2010"> Template:Cite book </ref>Template:Rp

ManufacturersEdit

For each vendor's web site, refer to "External links" section.

  • Batronix GmbH & Co. KG
  • BPM Microsystems
  • Conitec Datasystems
  • Data I/O Corporation
  • DediProg Technology Co., Ltd
  • Elnec s.r.o
  • Elprosys Sp. z o.o.
  • halec
  • Hi-Lo System Research
  • MCUmall Electronics Inc.
  • Template:Ill
  • Phyton, Inc.
  • Xeltek Inc.

See alsoEdit

ReferencesEdit

Template:Reflist

External linksEdit

Template:Sister project