programmer (hardware)
{{Short description|Device that installs firmware on a device}}
Image:Programmer conitec galep5.jpg socket]]
Image:NPP16-FrontSide-wso-wobg.png
File:BPM 3928 Automated Programming System.jpg
In the context of installing firmware onto a device, a programmer, device programmer, chip programmer, device burner,{{rp|364}} or PROM writer
{{cite book|last1=Cressler|first1=John D.|title=Silicon Earth: Introduction to Microelectronics and Nanotechnology, Second Edition|date=2017|publisher=CRC Press|isbn=9781351830201|url=https://books.google.com/books?id=i-5HDwAAQBAJ&q=PROM+writer&pg=SA6-PA17-IA1|language=en}}
is a device that writes, a.k.a. burns, firmware to a target device's non-volatile memory.
{{cite book|last1=Czerwinski|first1=Robert|last2=Kania|first2=Dariusz|title=Finite State Machine Logic Synthesis for Complex Programmable Logic Devices|date=2013|publisher=Springer Science & Business Media|isbn=9783642361661|url=https://books.google.com/books?id=SVBEAAAAQBAJ&q=programmable+devices&pg=PA3|language=en}}
{{rp|3}}
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.
Connection
File:Adafruit TinyISP AVR Programmer.jpg 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=
In some cases, the target device is inserted into a socket (usually ZIF) on the programmer.{{rp|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.
{{cite book|last1=Edwards|first1=Lewin|title=So You Wanna Be an Embedded Engineer: The Guide to Embedded Engineering, From Consultancy to the Corporate Ladder|date=2006|publisher=Elsevier|isbn=9780080498157|url=https://archive.org/details/pdfy-MKFMCCNbqENoR3Ft|page=[https://archive.org/details/pdfy-MKFMCCNbqENoR3Ft/page/n66 58]|quote=plug-in adapters DIP packaging.|language=en}}
{{rp|58}}
=Cable & port=
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.
{{cite web|title=IEEE 1532-2002 - IEEE Standard for In-System Configuration of Programmable Devices|url=https://standards.ieee.org/ieee/1532/3366/|website=IEEE}}
{{cite web|title=What is the IEEE 1532 Standard?|url=https://www.keysight.com/main/editorial.jspx?&ckey=2052199|publisher=Keysight Technologies}}
{{cite book|last1=Jacobson|first1=Neil G.|title=The In-System Configuration Handbook:: A Designer's Guide to ISC|date=2012|publisher=Springer Science & Business Media|isbn=9781461504894|url=https://books.google.com/books?id=H53aBwAAQBAJ&q=programmer&pg=PA135|language=en}}
Transfer
Data is transferred from the programmer to the device as signals via connecting pins.
Some devices have a serial interface
{{cite book|last1=Ong|first1=Royan H. L.|last2=Pont|first2=Michael J.|title=Proceedings of the ninth international symposium on Hardware/Software codesign - CODES '01 |chapter=Empirical comparison of software-based error detection and correction techniques for embedded systems |date=25 April 2001|pages=230–235|doi=10.1145/371636.371739|chapter-url=https://www.researchgate.net/publication/221656717|publisher=ACM|isbn=978-1581133646|citeseerx=10.1.1.543.9943|s2cid=15929440}}{{rp|232, pdf3}}
for receiving data (including JTAG interface).{{rp|642, pdf15}}
Other devices communicate on parallel pins, followed by a programming pulse with a higher voltage for programming the data into the device.
{{cite book|last1=Ravichandran|first1=D.|title=Introduction To Computers And Communication|date=2001|publisher=Tata McGraw-Hill Education|isbn=9780070435650|url=https://books.google.com/books?id=EHNOHAjXdQcC&q=PROM+programmer&pg=PA125|language=en}}
{{rp|125}}
Usually, a programmer is controlled via a connected personal computer through a parallel port,
{{cite book|last1=Mueller|first1=Scott|title=Upgrading and Repairing PCs|date=2003|publisher=Que Publishing|isbn=9780789727459|url=https://archive.org/details/upgradingrepairi00mue_qq3|url-access=registration|page=[https://archive.org/details/upgradingrepairi00mue_qq3/page/364 364]|quote=PROM programmer PC transfer.|language=en}}
{{rp|364}}
USB port,
{{cite web|title=Review: XG autoelectric TL866CS MiniPro Universal USB Programmer|url=http://goughlui.com/2016/04/22/review-xg-autoelectric-tl866cs-minipro-universal-usb-programmer/|website=Gough's Tech Zone|date=22 April 2016}}
or LAN interface.{{cn|date=September 2024}}
A program on the controlling computer interacts with the programmer to perform operations such as configure install parameters and program the device,{{rp|364}}
{{cite book|author1=International Validation Forum|title=Validation Compliance Annual: 1995|date=1995|publisher=CRC Press|isbn=9780824794590|url=https://books.google.com/books?id=a55oaroHFI8C&q=PROM+programmer+transferring&pg=PA430|language=en}}
{{cite web|title=How to Read, Erase, & Write EProm EEProm Chips Electronic Fuel injection DIY Tuning GQ-4X Programmer| website=YouTube |url=https://www.youtube.com/watch?v=vUDP1XTmF9A|date=2 May 2014}}
Types
There are four general types of programmers:
- Automated programmers often have multiple programming sites/sockets{{cite web|title=gang {{!}} Definition of gang in English by Oxford Dictionaries|url=https://en.oxforddictionaries.com/definition/gang|archive-url=https://web.archive.org/web/20180317102217/https://en.oxforddictionaries.com/definition/gang|url-status=dead|archive-date=March 17, 2018|website=Oxford Dictionaries {{!}} English}}
for mass production.{{cite book|last1=Mazidi|first1=Muhammad Ali|last2=Naimi|first2=Sarmad|last3=Naimi|first3=Sepehr|title=The AVR microcontroller and embedded systems : using Assembly and C|date=2011|publisher=Prentice Hall|location=Upper Saddle River, N.J.|isbn=9780138003319|url=http://www.microdigitaled.com/AVR/Articles/AVR_v1_online.pdf|access-date=2018-03-16|archive-date=2020-02-15|archive-url=https://web.archive.org/web/20200215060436/http://www.microdigitaled.com/AVR/Articles/AVR_v1_online.pdf|url-status=dead}} 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.
{{cite web|title=EEVblog #411 - MiniPro TL866 Universal Programmer Review - Page 1|url=https://www.eevblog.com/forum/blog/eevblog-411-minipro-tl866-universal-programmer-review/|website=www.eevblog.com}}
{{cite web|title=EPROM programmer for field service - Google Search|url=https://www.google.com/search?q=EPROM+programmer+for+field+service|website=www.google.com|language=en}}
- Specialized programmers for certain circuit types only, such as FPGA,{{cite book|last1=Pang|first1=Aiken|last2=Membrey|first2=Peter|title=Beginning FPGA: Programming Metal: Your brain on hardware|date=2016|publisher=Apress|isbn=9781430262480|url=https://books.google.com/books?id=X4fJDQAAQBAJ&q=programmer&pg=PA305|language=en}}
microcontroller,{{rp|642, pdf15}} and EEPROM programmers.
History
File:Universal Prom Programmer.jpg
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{{endash}}25 Volts.{{cite book|last1=Godse|first1=Atul P.|last2=Godse|first2=Deepali A.|title=Digital Techniques|date=2008|publisher=Technical Publications|isbn=9788184314014|url=https://books.google.com/books?id=F6Vor58f9FYC&q=PROM+programmer+25V&pg=PA651|language=en}}
{{cite book|last1=Ball|first1=Stuart|title=Embedded Microprocessor Systems: Real World Design|date=2002|publisher=Elsevier|isbn=9780080477572|url=https://books.google.com/books?id=6738mXhY4igC&q=PROM+programmer+12V&pg=PA40|language=en}}
{{rp|40}}
But according to the progress of memory device technology, recent flash memory programmers do not need high voltages.
{{cite journal|last1=Choi|first1=S. J.|last2=Han|first2=J. W.|last3=Jang|first3=M. G.|last4=Kim|first4=J. S.|last5=Kim|first5=K. H.|last6=Lee|first6=G. S.|last7=Oh|first7=J. S.|last8=Song|first8=M. H.|last9=Park|first9=Y. C.|last10=Kim|first10=J. W.|last11=Choi|first11=Y. K.|title=High Injection Efficiency and Low-Voltage Programming in a Dopant-Segregated Schottky Barrier (DSSB) FinFET SONOS for nor-type Flash Memory|journal=IEEE Electron Device Letters|date=2009|volume=30|issue=3|pages=265–268|doi=10.1109/LED.2008.2010720|bibcode=2009IEDL...30..265C |issn=0741-3106}}
{{cite web|title=Remembering the PROM knights of Intel {{!}} EE Times|url=https://www.eetimes.com/document.asp?doc_id=1144961|website=EETimes|date=2002-07-03}}
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.
{{cite book|last1=DuCastel|first1=Bertrand|last2=Jurgensen|first2=Timothy|title=Computer Theology: Intelligent Design of the World Wide Web|date=2008|publisher=Midori Press LLC|isbn=9780980182118|url=https://books.google.com/books?id=zLh5CIwvTyMC&q=bootstrap+mechanical+switch&pg=PA262|language=en}}
{{cite web|title=Getting Started with Blinking Lights on Old Iron|url=https://hackaday.com/2017/08/10/getting-started-with-blinking-lights-on-old-iron/|website=Hackaday|date=10 August 2017}}
{{cite web|last1=Gooijen|first1=Henk|title=NOVA 3 console description|url=http://www.pdp-11.nl/dg/nova3/nova3.html#system%20console|website=www.pdp-11.nl}}
Nowadays, EEPROMs are used for bootstrapping mechanism as BIOS, and no need to operate mechanical switches for programming.
{{cite book|last1=Goel|first1=Anita|title=Computer Fundamentals|date=2010|publisher=Pearson Education India|isbn=9788131733097|url=https://books.google.com/books?id=zyOYs2EqZDgC&q=BIOS+bootstrap+EEPROM&pg=PA45|language=en}}
{{rp|45}}
Manufacturers
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.
- {{ill|Minato Holdings|ja|ミナトホールディングス}}
- Phyton, Inc.
- Xeltek 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
{{reflist}}
External links
- Technical information
- [https://www.jedec.org/category/technology-focus-area/memory-configurations-jesd21-c JEDEC - Memory Configurations: JESD21-C]
- [https://www.jedec.org/standards-documents/docs/jesd-6801/ JEDEC - Common Flash Interface (CFI) Specification, JESD68.01, September 2003.]
- [http://www.delorie.com/agenda/specs/29220404.pdf Intel - Common Flash Interface (CFI) and Command Sets]
- [https://standards.ieee.org/ieee/1532/3366/ IEEE Std 1532-2002 (Revision of IEEE Std 1532-2001) - IEEE Standard for In-System Configuration of Programmable Devices]
- [https://www.keysight.com/main/editorial.jspx?&ckey=2052199 What is the IEEE 1532 Standard? {{!}} Keysight Technologies]
- [https://www.jedec.org/document_search/field_keywords/logic-device-programmer-2848 JEDEC - STANDARD DATA TRANSFER FORMAT BETWEEN DATA PREPARATION SYSTEM AND PROGRAMMABLE LOGIC DEVICE PROGRAMMER: JESD3-C, Jun 1994]
- [https://www.jedec.org/committees/jc-42 JEDEC - JC-42 Solid State Memories]
- Manufacturers
- [https://www.batronix.com/menu/programming_technologies.html Batronix GmbH & Co. KG]
- [https://bpmmicro.com/programmers/ BPM Microsystems]
- [http://www.conitec.com/ Conitec Datasystems Inc.]
- [http://www.dataio.com/ Data I/O Corporation]
- [https://www.elnec.com/en/ Elnec s.r.o.]
- [https://www.diagprog4.com/ Elprosys Sp. z o.o.]
- [https://www.dediprog.com/ Dediprog]
- [https://www.halec.de/en/products/roloflash/ halec]
- [http://www.hilosystems.com/ Hi-Lo System Research Co. Ltd.]
- [https://www.mcumall.com/ MCUmall Electronics Inc.]
- [https://www.minato.co.jp/en/ Minato Holdings Inc.]
- [https://phyton.com/ Phyton, Inc.]
- [https://www.xeltek.com/ Xeltek Inc.]
{{Commons category|Device programmers}}
{{DEFAULTSORT:Programmer (Hardware)}}