Firmware
From Wikipedia, the free encyclopedia
Firmware is a term sometimes used to denote the fixed, usually rather small, programs that internally control various electronic devices. Typical examples range from end user products such as remote controls or calculators, through computer parts and devices like harddisks, keyboards, TFT screens or memory cards, all the way to scientific instrumentation and industrial robotics. Also more complex consumer devices, such as mobile phones, digital cameras, synthesizers, etc., contain firmware to enable the device's basic operation as well as implementing higher level functions.
Naturally, there are no strict, or well defined, boundaries between firmware and software, both are quite loose descriptive terms. However, firmware is always involved with very basic low-level operations in a device, without which the device would be completely non-functional.
Simple firmware typically reside in ROM or OTP/PROM, while more complex firmware often employ flash memory to allow for updates. Common reasons for updating firmware include fixing bugs or adding features to the device. Doing so usually involves loading a binary image file provided by the manufacturer into the device, according to a specific procedure; this is sometimes intended to be done by the end user
Contents |
[edit] Origin of the term
The term "firmware" was coined by Ascher Opler in a 1967 Datamation article.[1] Originally it meant the microcode contents of a writable control store (a specialized small area of RAM memory), which defined and implemented the machine instruction set of a computer's CPU. The firmware could be reloaded if needed to specialize or modify the computer's instruction set. As originally used firmware was contrasted with hardware (the CPU itself) and software (programs which ran on the CPU). It was not composed of CPU machine instructions, but of lower-level microcode involved in the implementation of machine instructions. It existed on the boundary of hardware and software, thus the term firmware.
Later the term was broadened to include any microcode, whether in RAM or ROM.
Still later, the term was again broadened in popular usage to denote anything ROM-resident, including processor machine instructions for BIOS, bootstrap loaders, or specialized applications.
[edit] Firmware today
Firmware has evolved to mean almost any programmable content of a hardware device, not only machine code for a microprocessor, but also configurations and data for application-specific integrated circuits, programmable logic devices, etc. Although modern devices that can be updated with new firmware typically employ semi-automatic methods, sometimes a storage medium, such as a socketed ROM, must be replaced (which was a typical procedure until the mid 1990s).
[edit] Computer peripherals
Most computer peripherals are indeed special-purpose computers. While external devices have firmware stored internally, modern computer peripheral cards typically have large parts of the firmware loaded by the host system at start-up, as this is more flexible. Such hardware may therefore be unable to function fully until the host computer has fed it the requisite firmware, often via the card's specific device driver (or, more exactly, a subsystem within a device driver package). Modern device drivers may also expose a direct user interface for configuration in addition to the fundamental operating system calls/interfaces and/or application program interfaces at the programming-level.
[edit] Firmware challenges in PCs
In some respects, the various firmware components are as important as the operating system in a working computer. However, unlike most modern operating systems, firmware rarely has a well evolved mechanism for updating itself to fix functionality issues that are detected after the unit is shipped.
The BIOS is fairly easy to update in a modern PC; devices like video cards or modems often rely on firmware dynamically loaded by a device driver and may thus be transparently updated through the operating system update mechanisms. In contrast, firmware in storage devices is rarely updated; mechanisms for detecting firmware versions and updating them are not standardized. These devices therefore tend to have a higher rate of functionality issues, compared to other parts of a modern computer system.[citation needed]
[edit] Portable music players
Some companies use firmware updates to add new playable file formats (encodings); Iriver added the Ogg format this way, for instance. Other features that may change with firmware updates are the GUI and even the battery life. Most modern music players support firmware upgrades.
[edit] Mobile phones
Most mobile phones have a firmware upgradable capability for much the same reasons as above, but some may even be upgraded to enhance reception or sound quality.
[edit] IEEE Definition
Institute of Electrical and Electronics Engineers (IEEE) Standard Glossary of Software Engineering Terminology, Std 610.12-1990, defines firmware as follows:
- "The combination of a hardware device and computer instructions and data that reside as read-only software on that device.
- Notes: (1) This term is sometimes used to refer only to the hardware device or only to the computer instructions or data, but these meanings are deprecated. (2) The confusion surrounding this term has led some to suggest that it be voided altogether."
[edit] Examples
Examples of firmware include:
- Timing and control systems for washing machines
- The BIOS found in IBM-compatible Personal Computers;
- The platform code found on Itanium systems, Intel-based Mac OS X machines, and many Intel desktop boards is EFI compliant firmware;
- Open Firmware, used in computers from Sun Microsystems and Apple Computer;
- ARCS, used in computers from Silicon Graphics;
- RTAS (Run-Time Abstraction Services), used in computers from IBM;
- EPROM chips used in the Eventide H-3000 series of digital music processors.
- The Common Firmware Environment (CFE)
[edit] Firmware "hacking"
Sometimes an unofficial new or modified version of firmware is created by third parties to provide new features or unlock hidden functionality. Examples include Rockbox for digital audio players, CHDK for Canon digital cameras, and OpenWRT for wireless routers, region free firmware for DVD-drives, which are not region free with the official firmware, as well as many homebrew projects for gaming consoles. These can often unlock general purpose computing functionality in previously limited devices (e.g., running Doom on iPods). Most firmware hacks are free and open source software as well.
These hacks usually take advantage of the firmware update facility on many devices to install or run themselves. Some, however, must resort to exploits in order to run, because the manufacturer has attempted to lock the hardware to stop it from running unlicensed code.
[edit] See also
[edit] References
- ^ Opler, Ascher (January 1967). "Fourth-Generation Software". Datamation 13 (1): 22-24.