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 is no strict, or well defined, boundaries between firmware and software, both are quite loose descriptive terms. However, firmware is typically involved with very basic low-level operations in a device, without which the device would be completely non-functional. Firmware is also a relative term, as most embedded devices contain firmware at more than one level. Subsystems such as LCD modules, flash chips, communication controllers etc, have their own (usually fixed) program code and/or microcode, regarded as 'part of the hardware' by the higher level firmware.
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.
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.
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).
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.
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]
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.
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.
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 avoided altogether."
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, Apple Computer, and Genesi;
- ARCS, used in computers from Silicon Graphics;
- Kickstart used in Amiga line of computers, it is a unique example of a firmware mixing BIOS capabilities (POST, hardware init + Plug and Play auto-configuration of peripherals, etc.), the Kernel itself of the AmigaOS and parts of code used in the OS (Such as Graphical Interface primitives and libraries)
- 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)
- Controlling sound and video attributes as well as the channel list in modern TVs
No comments:
Post a Comment