Firmware is a type of software that is etched directly into a piece of hardware. It operates without going through APIs, the operating system, or device drivers — providing the needed instructions and guidance for the device to communicate with other devices or perform a set of basic tasks and functions as intended. Without firmware, the most basic of devices would not function. That is why it is often stored on a Read-Only Memory (ROM) chip, ensuring it does not get erased by accident, all while remaining as close as possible to the metal of the device. Firmware comes in various complexities and can be found in simple devices, like keyboards and hard drives, to more complex ones, like graphics cards and Basic Input/Output System (BIOS). In Android operating systems, the firmware is different depending on the manufacture, that is, it is the operating software is device-specific.
When a device is powered on, firmware is the first part to run and starts sending instructions to the device's processor to execute. If the device is as simple as a keyboard, the firmware does not stop working as there is no software to replace it. However, in more complex devices, such as PCs, laptops, and tablets, there are often multiple firmware sets that interact to achieve a common goal; load the operating system. Regardless of the type of device, firmware can only work with a basic or low level, binary language known as machine language. While the firmware's code could be written in a high level language for ease and versatility, it needs to be translated into a low level language before getting etched into the device. The same firmware cannot run on processors it was not designed for, as different processors can only identify certain instructions. If a device’s firmware were to get corrupted — during an update, for example — it cannot be fixed, as there is no way to communicate with the machine to install a replacement.
History of Firmware
Ascher Opler coined the term firmware in a 1967 Datamation article. In this article, Opler was referring to a new kind of computer program that had a different practical and psychological purpose from traditional programs from the user's perspective.
As computers began to increase in complexity, it became clear that various programs needed to first be initiated and run to provide a consistent environment necessary for running more complex programs at the user's discretion. This required programming the computer to run those programs automatically. Furthermore, as companies, universities, and marketers wanted to sell computers to laypeople with little technical knowledge, greater automation became necessary to allow a lay-user to easily run programs for practical purposes. This gave rise to a kind of software that a user would not consciously run, and it led to software that a lay user wouldn't even know about.
Originally, it meant the contents of a writable control store (a small specialized high-speed memory), containing microcode that defined and implemented the computer's instruction set, and that could be reloaded 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. Over time, popular usage extended the word firmware to denote any computer program that is tightly linked to hardware, including BIOS on PCs, bootstrap loaders on phones, or the control systems for simple electronic devices such as microwave ovens, remote controls, or computer peripherals.
Devices That Use Firmware
A lot of devices found in most people’s homes use firmware, including the items listed below.
- Personal Computers: A personal computer (PC)’s firmware components are just as important as its operating system (OS). But unlike an OS, firmware cannot update itself automatically to fix issues detected after the unit gets shipped.
- Consumer Products: Today’s portable music players like iPods get firmware upgrades. Some device manufacturers use firmware updates to add new playable file formats (codecs). Other features that such updates may change include graphical user interfaces (GUIs) or battery life. Almost all mobile phones have a firmware over-the-air firmware upgrade capability these days.
- Automobiles: Starting 1996, most vehicles began using onboard computers and various sensors to detect mechanical problems. By 2010, they also employed computer-controlled antilock braking systems (ABSs) and computer-operated transmission control units (TCUs). All these run because of firmware.