Programmer (hardware)

From Wikipedia, the free encyclopedia
(Redirected from PROM programmer)
Jump to navigation Jump to search
Engineering Universal Programmer with two sockets
Pocket Programmer Galep-5 with a ZIF socket
Universal Gang Programmer with 16 sockets
BPM 3928 Automated Programming System
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,[1]: 364  or PROM writer[2] is a device that writes, a.k.a. burns, firmware to a target device's non-volatile memory.[3]: 3 

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

Connection

[edit | edit source]
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.

Insertion

[edit | edit source]

In some cases, the target device is inserted into a socket (usually ZIF) on the programmer.[4]: 642, pdf15  If the device is not a standard DIP packaging, a plug-in adapter board, which converts the footprint with another socket, is used.[5]: 58 

Cable & port

[edit | edit source]

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.[6][7][8]

Transfer

[edit | edit source]

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

Some devices have a serial interface[9]: 232, pdf3  for receiving data (including JTAG interface).[4]: 642, pdf15  Other devices communicate on parallel pins, followed by a programming pulse with a higher voltage for programming the data into the device.[10]: 125 

Usually, a programmer is controlled via a connected personal computer through a parallel port,[1]: 364  USB port,[11] or LAN interface.[citation needed] A program on the controlling computer interacts with the programmer to perform operations such as configure install parameters and program the device,[1]: 364  [12]: 430  [13][14]

Types

[edit | edit source]
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[15] for mass production.[4] 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.
  2. Development programmers usually have a single programming site; used for first article development and small-series production.[16]
  3. Pocket programmers for development and field service.[16][17]
  4. Specialized programmers for certain circuit types only, such as FPGA,[18] microcontroller,[4]: 642, pdf15  and EEPROM programmers.[13]

History

[edit | edit source]
Historical Programmer;
A shoebox size
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 0–25 Volts.[19]: 651 [20]: 40  But according to the progress of memory device technology, recent flash memory programmers do not need high voltages.[21][22]

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.[23]: 261–262 [24][25] Nowadays, EEPROMs are used for bootstrapping mechanism as BIOS, without the need to operate mechanical switches for programming.[26]: 45 

Manufacturers

[edit | edit source]

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.
  • Minato Holdings (ja)
  • Phyton, Inc.
  • Xeltek Inc.

See also

[edit | edit source]

References

[edit | edit source]
  1. ^ a b c Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  2. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  3. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  4. ^ a b c d Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  5. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  6. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  7. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  8. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  9. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  10. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  11. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  12. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  13. ^ a b Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  14. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  15. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  16. ^ a b Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  17. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  18. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  19. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  20. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  21. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  22. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  23. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  24. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  25. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  26. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
[edit | edit source]