- Field-programmability
An electronic device or
embedded system is said to be field-programmable or in-place programmable if itsfirmware (stored innon-volatile memory , such as 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 buggy or obsolete firmware. For example,
as of 2007 , adigital camera vendor could distribute firmware supporting a new imagefile format by instructing consumers todownload a new firmware image to the camera via aUSB cable.History
When a device's firmware is stored in
mask ROM orone-time programmable PROM, it cannot be modified without physically replacing theintegrated circuit , so such a device cannot be field-programmable in the modern sense.EPROM -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 andflash memory in the 1980s. Early EEPROMs could only be reprogrammed with expensive, dedicated programmer hardware, since they required high voltages (10-20 V, compared to typical 3-5 Vlogic level s) and there was no standard programming 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 devices contain internalcharge pump s which eliminate the need for high voltages.
* Most consumers have access topersonal computer s, which can perform arbitrary programming protocols.
* UbiquitousInternet 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 manyconsumer electronic s devices. Many such devices include JTAGheader s internally for factory programming andquality control , even though no externalconnector is exposed in the finished product.Programmable logic
The 1980s saw the introduction of
programmable logic devices (PLDs) such as PALs, PLAs, andCPLD s. These areintegrated circuit s which can implement nearly arbitrarydigital 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 availableas of 2007 . These high-capacity devices may implement extremely complex logic, such asmicroprocessor s ordigital signal processor s. Today, they are a great aid in the development and rapid deployment of digital electronic devices.Hobbyist opportunities
As of 2007 , many consumer electronic devices (includingMP3 player s,broadband router s,cell phone s, and digital cameras) contain embedded systems based on general-purposemicroprocessor s andmicrocontroller s. Most of these devices contain field-programmable components which can be located and accessed by knowledgeablehardware 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 andOpenWRT 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 thehardware .See also
*
Firmware
*JTAG
*FPGA External links
* [http://wiki.openwrt.org/UsbAudioHowto UsbAudioHowTo] : a guide to converting a
wireless router into anInternet radio player, from the [http://www.openwrt.org OpenWRT] project
Wikimedia Foundation. 2010.