Field-programmability: Difference between revisions

Content deleted Content added
Addbot (talk | contribs)
m Bot: Migrating 1 interwiki links, now provided by Wikidata on d:q5446864
Citation bot (talk | contribs)
Altered title. | Use this bot. Report bugs. | Suggested by Abductive | Category:Digital electronics | #UCB_Category 2/158
 
(13 intermediate revisions by 10 users not shown)
Line 1:
{{onesource|date=September 2022}}<!-- Deleted image removed: [[Image:Netgear_mr814v2_upgrade_screenNetgear mr814v2 upgrade screen.png|thumb|right|The [[Netgear]] MR814 [[wi-fi|wireless]] [[home gateway]] can be '''field-programmed''' from a web interface; its firmware consists of [[eCos]] operating system images stored in NAND flash.]] -->
An [[Electronics|electronic]] device or [[embedded system]] is said to be '''field-programmable''' or '''in-place programmable''' if its [[firmware]] (stored in [[non-volatile memory]], such as [[Read-only memory|ROM]]) can be modified "in the field,", without disassembling the device or returning it to its manufacturer.<ref>{{Cite web |last=Schneider |first=Josh |date=2024-06-03 |title=Field programmable gate arrays (FPGAs) vs. microcontrollers: What's the difference? |url=https://www.ibm.com/blog/fpga-vs-microcontroller/ |access-date=2024-10-09 |website=IBM Blog |language=en-US}}</ref>
 
This is often an extremely desirable feature, as it can reduce the cost and turnaround time for replacement of [[computer bug|buggy]] or obsolete firmware. For example, {{As of|2007|lc=on}}, a [[digital camera]] vendor could distribute firmware supporting a new image [[file format]] by instructing consumers to [[download]] a new firmware [[ROM image|image]] to the camera via a [[USB]] cable.
An [[Electronics|electronic]] device or [[embedded system]] is said to be '''field-programmable''' or '''in-place programmable''' if its [[firmware]] (stored in [[non-volatile memory]], such as [[Read-only memory|ROM]]) can be modified "in the field," without disassembling the device or returning it to its manufacturer.
 
This is often an extremely desirable feature, as it can reduce the cost and turnaround time for replacement of [[computer bug|buggy]] or obsolete firmware. For example, {{As of|2007|lc=on}}, a [[digital camera]] vendor could distribute firmware supporting a new image [[file format]] by instructing consumers to [[download]] a new firmware [[ROM image|image]] to the camera via a [[USB]] cable.
 
== History ==
 
When a device's firmware is stored in [[mask ROM]] or [[one-time programmable]] PROM, it cannot be modified without physically replacing the [[integrated circuit]], so such a device cannot be field-programmable in the modern sense. [[EPROM|Erasable PROM]]-based firmware can be erased and reprogrammed, but only after lengthy exposure to a high-intensity ultraviolet light source.
 
Thus, field-programmable devices were not practical until the invention of [[EEPROM]] and [[flash memory]] in the 1980s. Early EEPROMs could only be reprogrammed with expensive, dedicated [[programmer (hardware)|programmer hardware]], since they required high voltages (10-20&nbsp;[[Volt|V]], compared to typical 3-5&nbsp;V [[logic level]]s) and there was no standard programming [[protocolCommunication (computing)protocol|protocol]]; as a result, field-programming was mostly performed by professional technicians and service engineers. However, as of the early 2000s, many devices were expressly designed to be field-programmed by ordinary consumers. Several developments have made this possible:
* Modern [[EEPROM]] and [[Flash memory|flash]] devices contain internal [[charge pump]]s which eliminate the need for high voltages.
* Most consumers have access to [[personal computer]]s, which can perform arbitrary programming protocols.
* Ubiquitous [[Internet]] [[Internet access|access]] provides a convenient means to rapidly distribute firmware images.
 
Standard protocols for programming non-volatile memory devices have emerged. For example, [[JTAG]] may be used to read and program the EEPROM and Flash chips in many [[consumer electronicelectronics]]s devices. Many such devices include [[JTAG header]]s internally for factory programming and [[quality control]], even though no external [[electrical connector|connector]] is exposed in the finished product.
 
== Programmable logic ==
 
The 1980s saw the introduction of '''[[programmable logic]] devices''' (PLDs) such as [[programmableProgrammable arrayArray logicLogic|PALPALs]]s, [[programmable logic array|PLA]]s, and [[CPLDComplex programmable logic device|CPLDs]]s. These are [[integrated circuit]]s which can implement nearly arbitrary [[digital logic]] functions based on firmware-like information stored in non-volatile memory.
 
Thus, devices containing PLDs may be considered as field-programmable ''hardware'', while EEPROM and flash memory act as storage for field-programmable ''software''.
 
[[Field-programmable gate array]]s (FPGAs) were invented in 1984, and are the most advanced kind of programmable logic available {{As of|2007|lc=on}}today. These high-capacity devices may implement extremely complex logic, such as [[microprocessor]]s or [[digital signal processor]]s. Today, they are a great aid in the development and rapid deployment of digital electronic devices. FPGAs are often used for [[FPGA prototyping|prototyping hardware designs]] and [[hardware acceleration]].
 
== Hobbyist opportunities ==
 
{{As of|2007}}, manyMany consumer electronic devices (including [[MP3 player]]s, [[broadband router]]s, [[cell phone]]s, and digital cameras) contain embedded systems based on [[general-purpose computer|general-purpose]] [[microprocessor]]s and [[microcontroller]]s. Most of these devices contain field-programmable components which can be located and accessed by knowledgeable [[hardware hacker]]s. Field-programming allows hobbyists to replace a device's firmware with new code that can modify or extend its capabilities.
 
Numerous online communities have sprung up around devices found to be particularly conducive to such modification. For example, the [[iPodLinux]] and [[OpenWrt]] projects have enabled users to run full-featured Linux distributions on their MP3 players and wireless routers, respectively.
Line 35 ⟶ 34:
* [[Firmware]]
* [[JTAG]]
*[[Field-programmable gate array]] (FPGA)
* [[FPGA]]
*[[Field-programmable analog array]] (FPAA) - like FPGA but with [[Analog signal|analog signals]]
** [[Field-programmable RF|Field-programmable radio frequency]] devices
 
==References==
{{Reflist}}
 
== External links ==