Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Programmer (hardware)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Device that installs firmware on a device}} [[Image:NuProg-E2-wsocket.png|thumb|''Engineering Universal Programmer'' with two sockets]] [[Image:Programmer conitec galep5.jpg|thumb|''Pocket Programmer'' Galep-5 with a ''[[Zero insertion force|ZIF]]'' socket]] [[Image:NPP16-FrontSide-wso-wobg.png|thumb|Universal Gang Programmer with 16 sockets]] [[File:BPM 3928 Automated Programming System.jpg|alt=BPM 3928 Automated Programming System|thumb|The [https://bpmmicro.com/3928-7-site-aps/ '''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 [[Installation (computer programs)|installing]] [[firmware]] onto a device, a '''programmer''', '''device programmer''', '''chip programmer''', '''[[Programmable read-only memory#Programming|device burner]]''',<ref name="Muller 2003"/>{{rp|364}} or '''PROM writer'''<ref name="Cressler 2017"> {{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}} </ref> is a device that writes, a.k.a. burns, [[firmware]] to a target device's [[non-volatile memory]].<ref name="Czerwinski 2013"> {{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}} </ref>{{rp|3}} Typically, the target device memory is one of the following types: [[Programmable read-only memory|PROM]], [[EPROM]], [[EEPROM]], [[Flash memory]], [[MultiMediaCard#eMMC|eMMC]], [[Magnetoresistive random-access memory|MRAM]], [[Ferroelectric RAM|FeRAM]], [[Non-volatile random-access memory|NVRAM]], [[Programmable logic device|PLD]], [[Programmable logic array|PLA]], [[Programmable Array Logic|PAL]], [[Generic array logic|GAL]], [[Complex programmable logic device|CPLD]], [[Field Programmable Gate Array|FPGA]]. ==Connection== [[File:Adafruit TinyISP AVR Programmer.jpg|thumb|''[[JTAG]] Connector''-based<br>''On-Board Programmer''<br>for [[Atmel AVR|AVR]] [[microcontroller]]<br>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 [[Zero insertion force|ZIF]]) on the programmer.<ref name="Mazidi 2017"/>{{rp|642, pdf15}} If the device is not a standard [[Dual in-line package|''DIP packaging'']], a plug-in adapter board, which converts the [[Footprint (electronics)|footprint]] with another socket, is used.<ref name="Edward 2006"> {{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}} </ref>{{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]]''.<ref name="IEEE-2532"> {{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]]}} </ref><ref name="IEEE 1532 by agilent"> {{cite web|title=What is the IEEE 1532 Standard?|url=https://www.keysight.com/main/editorial.jspx?&ckey=2052199|publisher=Keysight Technologies}} </ref><ref name="Jacobson 2012"> {{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}} </ref> ==Transfer== Data is transferred from the programmer to the device as signals via connecting pins. Some devices have a serial interface<ref name="Ong 2001"> {{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}}</ref>{{rp|232, pdf3}} for receiving data (including [[JTAG]] interface).<ref name="Mazidi 2017"/>{{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.<ref name="Ravichandran 2001"> {{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}} </ref>{{rp|125}} Usually, a programmer is controlled via a connected [[personal computer]] through a parallel port,<ref name="Muller 2003"> {{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}} </ref>{{rp|364}} [[USB]] port,<ref name="Review TL866CS"> {{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}} </ref> or [[local area network|LAN]] interface.{{cn|date=September 2024}} A [[computer program|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"/>{{rp|364}} <ref name="IVF 1995"> {{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}} </ref>{{rp|430}} <ref name="YouTube-HowTo"> {{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}} </ref><ref name="Minimum need to know">{{cite web|title=EPROMS: The minimum you need to know to burn your own|url=https://www.classic-computers.org.nz/blog/2012-10-21-eproms.htm|website=www.classic-computers.org.nz}}</ref> ==Types== [[File:Sp 5004gp transp.png|thumb|A ''Gang Programmer'' with ''a Set of 4 Sockets''.]] There are four general types of programmers: # '''Automated programmers''' often have multiple programming sites/sockets<ref name="gang by Oxford Dict">{{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}} </ref> for mass production.<ref name="Mazidi 2017">{{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}}</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"> {{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}} </ref> # '''Pocket programmers''' for development and field service.<ref name="MiniPro TL866 Universal Programmer Review" /><ref name="Google Search Field-service"> {{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}} </ref> # '''Specialized programmers''' for certain circuit types only, such as [[Field-programmable gate array|FPGA]],<ref name="FPGA Programmer">{{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}} </ref> [[microcontroller]],<ref name="Mazidi 2017" />{{rp|642, pdf15}} and [[EEPROM]] programmers.<ref name="YouTube-HowTo" /> ==History== [[File:Universal Prom Programmer.jpg|thumb|Historical Programmer;<br>A shoebox size]] [[File:78K0R Cool-It.jpg|thumb|''Pocket-sized'' & ''USB Port interfaced'' "[[in-circuit emulator|ICE]] for [[microcontroller|MCU]]" &<br>''[[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.<ref name="Godse 2008">{{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}} </ref>{{rp|651}}<ref name="Ball 2002"> {{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}} </ref>{{rp|40}} But according to the progress of memory device technology, recent flash memory programmers do not need high voltages.<ref name="Choi 2009"> {{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}} </ref><ref name="EETIMES 2002"> {{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}} </ref> In the early days of [[computing]], [[booting]] mechanism was a mechanical devices usually consisted of switches and [[Light-emitting diode|LEDs]]. It means the ''programmer'' was not an equipment but a human, who entered [[machine code]]s 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"> {{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}} </ref>{{rp|261{{endash}}262}}<ref name="PDP8"> {{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}} </ref><ref name="Nova3"> {{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}} </ref> Nowadays, [[EEPROM]]s are used for [[bootstrapping]] mechanism as [[BIOS]], and no need to operate mechanical switches for programming.<ref name="Goel 2010"> {{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}} </ref>{{rp|45}} ==Manufacturers== For each vendor's web site, refer to [[#External links|"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 (robotics)|Off-line programming]] *[[In-system programming]] *[[Debug port]] *[[JTAG|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 (file format)|SREC]] β ASCII file format *[[Executable and Linkable 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)}} [[Category:Computer engineering]] [[Category:Integrated circuits]] [[Category:Non-volatile memory]] [[Category:Gate arrays]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Cite book
(
edit
)
Template:Cite journal
(
edit
)
Template:Cite web
(
edit
)
Template:Cn
(
edit
)
Template:Commons category
(
edit
)
Template:Endash
(
edit
)
Template:Ill
(
edit
)
Template:Reflist
(
edit
)
Template:Rp
(
edit
)
Template:Short description
(
edit
)