Field-programmability: Difference between revisions

Content deleted Content added
Citation bot (talk | contribs)
Altered title. | Use this bot. Report bugs. | Suggested by Abductive | Category:Digital electronics | #UCB_Category 2/158
 
(29 intermediate revisions by 21 users not shown)
Line 1:
{{onesource|date=September 2022}}<!-- Deleted image removed: [[Image:Netgear 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]] (usually 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]], 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 [[JTAG header]]s internally for factory programming and [[quality control|factory testing]], 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]]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 [[OpenWRTOpenWrt]] projects have enabled users to run full-featured Linux distributions on their MP3 players and wireless routers, respectively.
 
While hobbyist field-programming is theoretically possible in practically any embedded system today, in practice efforts to modify consumer devices are often hampered by lack of [[documentation]] for the [[Electronic hardware|hardware]].
 
== See also ==
 
* [[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 ==
 
* [http://wiki.openwrt.org/doc/howto/usb.audio UsbAudioHowTo]: a guide to converting a [[wireless router]] into an [[Internet radio]] player, from the [http://www.openwrt.org OpenWrt] project
 
[[Category:Digital electronics]]