Dennis Faas's picture

In electronics and computing, firmware is a term often used to denote fixed programs and data structures that internally control various electronic devices.

Typical examples of devices containing firmware range from end-user products such as PCs, laptops, netbooks, remote controls and calculators, and even include scientific instrumentation and industrial robotics. More complex consumer devices, such as mobile phones and digital cameras, contain firmware to define the device's basic operation as well as implementing higher-level functions in the future.

Firmware Versus Software

Technically, firmware is software that defines how hardware is to operate. No strict or well-defined boundaries separate firmware from 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.

Firmware Updates

Simple firmware typically resides in ROM (read only memory) or OTP/PROM (programmable read only memory), while more complex firmware often employs 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 (by the device manufacturer) to be done by the end user.

Origin of the term 'Firmware'

Ascher Opler coined the term "firmware" in a 1967 Datamation article. Originally, it meant the microcode -- contents of a writable control store (a small specialized high speed memory), which defined and implemented the computer's instruction set.

If necessary, one could re-load the firmware to specialize or modify the instructions that the central processing unit (CPU) could execute. As originally used, firmware contrasted with hardware (the CPU itself) and software (normal instructions executing on a 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 between hardware and software, thus the name "firmware".

Firmware as of 2010

The concept of "firmware" has evolved to mean almost any programmable content of a hardware device, not only machine code for a processor, but also configurations and data for application-specific integrated circuits (ASICs), programmable logic devices, etc.

This document is licensed under the GNU Free Documentation License (GFDL), which means that you can copy and modify it as long as the entire work (including additions) remains under this license.

Rate this article: 
No votes yet