Firmware has evolved to mean the programmable content of a hardware
device, which can consist of machine language instructions for a
processor, or configuration settings for a fixed-function device, gate
array or programmable logic device.
A common feature of firmware is that it can be updated
post-manufacturing, either electronically, or by replacing a storage
medium such as a socketed memory chip.
Firmware can — but is not required to — expose an externally
accessible interface. For example, in some modem implementations the
firmware is not directly accessible, but is part of a combination of
hardware and firmware that responds to commands from the host system.
Firmware has traditionally been stored in ROM, however cost and
performance requirements have driven component vendors to adopt various
replacements, including non-volatile media such as EEPROM and Flash, or
SRAM solutions, such as the firmware loaded by an operating system
device driver, as described below.