In computing, firmware is software that provides low-level control of computing device hardware.
For a relatively simple device, firmware may perform all control, monitoring and data manipulation functionality.
For a more complex device, firmware may provide relatively low-level control as well as hardware abstraction services to higher-level software such as an operating system.
Firmware is commonly stored in an EEPROM, which makes use of an I/O protocol such as SPI.