<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://debianws.lexgopc.com/wiki143/index.php?action=history&amp;feed=atom&amp;title=Field-programmability</id>
	<title>Field-programmability - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://debianws.lexgopc.com/wiki143/index.php?action=history&amp;feed=atom&amp;title=Field-programmability"/>
	<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Field-programmability&amp;action=history"/>
	<updated>2026-05-04T20:30:32Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>http://debianws.lexgopc.com/wiki143/index.php?title=Field-programmability&amp;diff=4685450&amp;oldid=prev</id>
		<title>imported&gt;Citation bot: Altered title. | Use this bot. Report bugs. | Suggested by Abductive | Category:Digital electronics | #UCB_Category 2/158</title>
		<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Field-programmability&amp;diff=4685450&amp;oldid=prev"/>
		<updated>2024-11-14T18:34:18Z</updated>

		<summary type="html">&lt;p&gt;Altered title. | &lt;a href=&quot;/wiki143/index.php?title=En:WP:UCB&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;En:WP:UCB (page does not exist)&quot;&gt;Use this bot&lt;/a&gt;. &lt;a href=&quot;/wiki143/index.php?title=En:WP:DBUG&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;En:WP:DBUG (page does not exist)&quot;&gt;Report bugs&lt;/a&gt;. | Suggested by Abductive | &lt;a href=&quot;/wiki143/index.php?title=Category:Digital_electronics&quot; title=&quot;Category:Digital electronics&quot;&gt;Category:Digital electronics&lt;/a&gt; | #UCB_Category 2/158&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{onesource|date=September 2022}}&amp;lt;!-- Deleted image removed: [[Image:Netgear mr814v2 upgrade screen.png|thumb|right|The [[Netgear]] MR814 [[wi-fi|wireless]] [[home gateway]] can be &amp;#039;&amp;#039;&amp;#039;field-programmed&amp;#039;&amp;#039;&amp;#039; from a web interface; its firmware consists of [[eCos]] operating system images stored in NAND flash.]] --&amp;gt;&lt;br /&gt;
An [[Electronics|electronic]] device or [[embedded system]] is said to be &amp;#039;&amp;#039;&amp;#039;field-programmable&amp;#039;&amp;#039;&amp;#039; or &amp;#039;&amp;#039;&amp;#039;in-place programmable&amp;#039;&amp;#039;&amp;#039; if  its [[firmware]] (stored in [[non-volatile memory]], such as [[Read-only memory|ROM]]) can be modified &amp;quot;in the field&amp;quot;, without disassembling the device or returning it to its manufacturer.&amp;lt;ref&amp;gt;{{Cite web |last=Schneider |first=Josh |date=2024-06-03 |title=Field programmable gate arrays (FPGAs) vs. microcontrollers: What&amp;#039;s the difference? |url=https://www.ibm.com/blog/fpga-vs-microcontroller/ |access-date=2024-10-09 |website=IBM Blog |language=en-US}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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, 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.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
When a device&amp;#039;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.&lt;br /&gt;
&lt;br /&gt;
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&amp;amp;nbsp;[[Volt|V]], compared to typical 3-5&amp;amp;nbsp;V [[logic level]]s) and there was no standard programming [[Communication 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:&lt;br /&gt;
* Modern [[EEPROM]] and [[Flash memory|flash]] devices contain internal [[charge pump]]s which eliminate the need for high voltages.&lt;br /&gt;
* Most consumers have access to [[personal computer]]s, which can perform arbitrary programming protocols.&lt;br /&gt;
* Ubiquitous [[Internet]] [[Internet access|access]] provides a convenient means to rapidly distribute firmware images.&lt;br /&gt;
&lt;br /&gt;
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 electronics]] 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.&lt;br /&gt;
&lt;br /&gt;
== Programmable logic ==&lt;br /&gt;
&lt;br /&gt;
The 1980s saw the introduction of &amp;#039;&amp;#039;&amp;#039;[[programmable logic]] devices&amp;#039;&amp;#039;&amp;#039; (PLDs) such as [[Programmable Array Logic|PALs]], [[programmable logic array|PLA]]s, and [[Complex programmable logic device|CPLDs]].  These are [[integrated circuit]]s which can implement nearly arbitrary [[digital logic]] functions based on firmware-like information stored in non-volatile memory.&lt;br /&gt;
&lt;br /&gt;
Thus, devices containing PLDs may be considered as field-programmable &amp;#039;&amp;#039;hardware&amp;#039;&amp;#039;, while EEPROM and flash memory act as storage for field-programmable &amp;#039;&amp;#039;software&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
[[Field-programmable gate array]]s (FPGAs) were invented in 1984, and are the most advanced kind of programmable logic available 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]].&lt;br /&gt;
&lt;br /&gt;
== Hobbyist opportunities ==&lt;br /&gt;
&lt;br /&gt;
Many 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&amp;#039;s firmware with new code that can modify or extend its capabilities.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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]].&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Firmware]]&lt;br /&gt;
* [[JTAG]]&lt;br /&gt;
*[[Field-programmable gate array]] (FPGA)&lt;br /&gt;
*[[Field-programmable analog array]] (FPAA) - like FPGA but with [[Analog signal|analog signals]]&lt;br /&gt;
** [[Field-programmable RF|Field-programmable radio frequency]] devices&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{Reflist}}&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
&lt;br /&gt;
* [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&lt;br /&gt;
&lt;br /&gt;
[[Category:Digital electronics]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Citation bot</name></author>
	</entry>
</feed>