/ˈfɜːrmwɛr/

noun … “Software embedded in hardware.”

Firmware is specialized software stored in non-volatile memory, such as ROM or Flash, that provides low-level control for a device’s hardware. It acts as an intermediary between the hardware and higher-level software, enabling the system to initialize, configure, and operate correctly. Firmware is essential in embedded systems, computers, networking devices, and peripherals.

Key characteristics of Firmware include:

  • Non-volatility: retains instructions even when the device is powered off.
  • Hardware-specific: tightly coupled with device architecture and components.
  • Updateable: modern firmware can often be upgraded to fix bugs, improve performance, or add features.
  • Essential startup role: firmware often contains bootloaders that initialize hardware and load operating systems.
  • Security implications: compromised firmware can create persistent vulnerabilities, requiring careful update mechanisms.

Workflow example: Booting a computer:

function power_on() {
    firmware.initialize_hardware()
    firmware.perform_self_test()
    os = firmware.load_os("RAM")
    cpu.execute(os)
}

Here, firmware initializes the hardware, conducts diagnostics, loads the operating system into RAM, and hands control to the CPU.

Conceptually, Firmware is like the embedded instructions in a smart appliance: it ensures the device knows how to start, operate, and interact with other components before any user-level software takes control.

See ROM, Flash, Memory, Bootloader, CPU.