What is firmware and how does it work?

Firmware is a term that many confuse or are totally unaware of its meaning. For this reason, in this article you will be able to learn more about what this low-level code means, in addition to understanding what it is for, why it is important to update it, on which hardware devices it is present, etc.

What is firmware?

Firmware is something in between software and hardware. Some include it as special software, others include it within what is hardware. It is about something intermediate, as I said, that is to say, a code with elementary routines or a simple program at a very low level that is stored in a non-volatile memory (EERPOM, flash…) and that serves so that the hardware can carry out all the functions for which it has been designed.

Currently, the firmware has been approached or integrated into the drivers or controllers, which usually include it to make it easier for the user to update and manage. In addition, this way it implies fewer risks when modifying it than when it is recorded directly on the hardware at the time of manufacture.

As you know, this firmware is present in many hardware devices such as mobile devices, IoT devices, CPUs, graphics cards, optical drives, routers, NAS, peripherals, etc. We will discuss its uses later, but it is important that you understand its importance so that everything works as it should, since without it it would not be possible. The firmware is one more layer that would be found between the drivers or controllers of the device and the hardware.

Differences firmware vs driver

There are notable differences between a driver and the firmware. Although in some cases the difference seems to be diluted and when downloading the drivers you are also downloading the firmware, the truth is that there are notable differences:

  • Firmware is a low-level routine or program that operates for specific hardware in addition to providing an API/ABI for the high level, that is, for the drivers.
  • The drivers or controllers provide a means or interface so that the operating system can use that API/ABI exposed by the firmware.
  • A controller or device driver is high-level software that allows the operating system to communicate with devices or hardware and manage their resources.
  • Firmware is a special program inside the device that allows the functions of the I/O hardware, etc. to be performed. They are usually loaded in a non-volatile memory such as an EEPROM or flash.
  • The controllers or drivers are specific to the operating system and dependent on the hardware.
  • Firmware is independent of the operating system, as well as closely related to the hardware.

Difference Between Firmware and Software

As I have commented before, some consider firmware as one more type of software, but it is different. To differentiate between conventional software and lower-level firmware, we can look at these statements:

  • Firmware is a very elementary code, just some routines or programs with basic instructions at a low level so that the hardware works and can communicate with the rest of the software. However, there is more complex firmware such as the BIOS/UEFI.
  • The control that the firmware does is at a low level, just controlling the elementary functions of the hardware.
  • The software is designed to be easy for users to interact with. And it can have many different functions.
  • The firmware is something much more concrete and, generally, hidden from the user.
  • The software is of the highest level.
  • The firmware is low level, almost working intimately with the hardware.
  • A software can be changed without having to replace a hardware component.
  • Firmware cannot be replaced in many cases without replacing the accompanying hardware. It can only be updated in some cases where this is allowed.
  • Firmware is embedded in non-volatile memory chips or loaded into the hardware device at boot time.
  • The software is not integrated into any hardware component. It is only stored in the secondary storage unit and will be loaded into RAM memory to be executed when necessary and the operating system kernel needs to execute said process.

Firmware types

There are several types of firmware that can be found on different hardware devices. Not all firmware is the same, and you have to differentiate between:

  • Low level: it is an intrinsic or inseparable part of the hardware. It is often stored in non-volatile memory chips, that is, read-only memories like a ROM, and therefore cannot be rewritten or updated. In other words, low-level firmware has one-time programmable memory, is programmed after manufacturing, and remains unchanged for the life of the device.
  • High-level: This firmware is upgradeable and is generally more complex than low-level firmware. This type of high-level firmware resides on flash memory chips, so it can be flashed, just like a BIOS/UEFI.
  • Subsystem: it comes as part of an integrated system. It is comparable to high-level firmware in that it can be updated and is more complex than low-level firmware, although it is usually less complex than high-level firmware. For example, like the ACPI that manages power.

What is a firmware update?

Of course, updating the firmware is just as vital as updating the software, and even more important in some cases. The proper functioning of the hardware devices you use at home will depend on it.

Firmware updates can occur sporadically, such as once every few years, or more frequently. In some cases the firmware is not updated, either because it is perfect or because the developer does not take the trouble to update it. For this reason, I always recommend choosing the most popular manufacturers with the highest frequency of firmware updates to avoid problems…