Programmer (hardware)
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
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
There are four general types of programmers:
- 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.
- 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>
- 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>
- 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
A shoebox size
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
- 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
ReferencesEdit
External linksEdit
- 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
- Manufacturers