What Is Firmware?

What is Firmware, and why is it so important?

A simple firmware definition is that firmware is low-level code that runs on the hardware. In other words, it's the software on your hardware.

The various hardware items on your phone or computer have to talk to each other. The keyboard can only talk to the motherboard because of the firmware in each system. The hardware is useless without a device's firmware, and the software would not be able to run.

Firmware is explicitly written for specific hardware devices. Therefore, you almost always need the actual hardware to load your code onto to write firmware to see if your draft works. It was initially often found in flash memory chips but is now embedded in computer hardware.

Firmware varies in its complexity. It can use standard communication protocols to enable different hardware devices to communicate or develop business logic.

Firmware can be “bare metal” low-level firmware or, in its more complex forms, such as motherboard firmware, can be high-level firmware using a “real-time operating system” or “RTOS.”

Once the firmware is written, it is “compiled” or turned into machine code, which the hardware can act on. This compiled code is then uploaded or flashed onto the device. Once this flashing is complete, the device boots up and begins to run the compiled code.

This often involves debugging tools attached to the hardware and specific equipment like oscilloscopes, logic analyzers, and multimeters. These tools allow the engineer to verify the hardware functions correctly.

What are Common Applications of Firmware?

Computers

All hardware inside a computer - motherboard, memory, hard drive, displays, USB, fans- requires hardware to run firmware. This firmware enables all hardware to communicate so your computer can run. The basic input/output system (BIOS) is an example of firmware in a PC. It lets the microprocessor's program start the device when you turn it on. It also allows the PC’s operating system to communicate with connected devices, such as your keyboard, mouse, printer, and other peripherals.

Home and personal-use products

The firmware also enables personal devices - your wifi router, phone, TV, appliances, wireless and Bluetooth devices, smart locks, and doorbells. Even a defibrillator uses firmware. In other words, pretty much all personal electronic devices are running firmware.

Automobiles

Cars are complex and only getting more complicated as they become self-driving, self-parking, automatic braking, collision-avoiding wonder machines.

Modern cars are way more complex than your phone and computer. And all of them can do far more than the computers that got Apollo to the moon.

Other examples

Robotics - keeping all the automatic systems running.

Military applications - making sure the missiles and smart bombs go where they should, and the drones see what they should.

Medical devices - robotic surgery and modern sensors need to be running and up to date. Even blood sugar testing can now be done through a mobile app.

Telecommunications systems are mission-critical to businesses and homes.

Firmware vs. Software: What is the difference?

The software consists of the applications you interact with, like web browsers or Microsoft Office. If you think about how the software gets signals from the hardware when, for instance, a user presses a key, you are thinking about firmware. That’s where firmware comes in. Firmware is the “low-level” code that runs directly on the hardware that acts as a bridge between the hardware and the software. Without firmware, your computer can't know how to communicate with a keyboard or the screen. Not firmware, device drivers are special software needed to make a given accessory work within a given operating system.

What is the Origin of Firmware?

The term "firmware" originated in a computer magazine in 1967. Back then, the term meant the contents of a small high-speed memory that housed a microcode that defined and implemented a computer's instruction set. There weren't instructions for the central processing unit (CPU). Instead, it used a lower level microcode to implement machine instructions existing between hardware and software.

Today, "firmware" refers to any computer program tightly linked to hardware. It is even found in a simple electronic device like a microwave, remote, or computer peripheral.

Why is Firmware Continually Updated?

Security Risk

  • Firmware hacks - a firmware update provides security and reduces the risk of information leaking. Microsoft has recently been reminding businesses about the potential for firmware hacking and the need for firmware updates.
  • This problem is particularly challenging since many devices cannot do automatic embedded firmware upgrades or updates.
  • Devices capable of firmware updates may not receive them if the company is not aware of the need. The devices can continue to run but not as well.
  • Customers may not be aware of update needs, and the company may not know how to contact the customer to remind them.
  • Industrial devices are at risk if they control sensitive systems like electricity, water treatment plants, and chemical treatment plants.

Improved Functions

  • Manufacturers of CD, DVD, and BD drivers release frequent firmware updates so that their hardware stays compatible with new media. If you buy some disks and they don't work when you try to record, update the firmware on your drive. The world of IoT devices is constantly expanding. New and updated firmware allows backward compatibility and connection between existing technologies and new ones in novel ways.
  • Matter is a newer protocol working to standardize how the devices in a home will be provisioned and communicate with each other or the user. It leverages the technology already in a home, including Wi-Fi and Thread, to build a unified wireless connectivity ecosystem for your smart home. This IP-based networking gives manufacturers each development while improving compatibility for consumers.

How Do Firmware Updates Work?

Devices run a compiled version of code optimized to a “machine code” that the device understands and acts on. Updates to firmware are as necessary as software updates. Updates adding to or rewriting the existing firmware to the device are as efficient as possible. They may happen every few years or far more frequently for devices that are often connected to the internet or need up-to-date security. Standard devices that get frequent updates to firmware include:

  • Routers
  • Printers
  • Modems
  • USB-connected peripherals (mouse, keyboard, etc.)
  • Cameras
  • Streaming devices

Devices can handle firmware updates in different ways, but this is usually done with the help of a “bootloader.” A bootloader is a tiny piece of code separate from the compiled application that solely handles determining which version of code to run. A new firmware image is downloaded, and the bootloader is invoked when you update. The bootloader determines whether the firmware image is valid and okay to run. The new image is run as is the default new image. Some devices can hold multiple images as a fallback in the event of an issue with the new image.

It's essential to update your firmware properly; doing it poorly can render your device non-functional. Usually, there will be information about the device's model and firmware version somewhere on your device. Find that before doing anything yourself. Once you know that, you can find out if an update is available by checking the developer's website—backup your current firmware before doing an update and then do it. Updating frequently is a good thing, but only if you are very careful to do it accurately. Most firmware will update automatically.

What is Firmware Development?

  • Firmware is software installed on hardware in Read-Only Memory (ROM). It enables components, programs, etc., to talk to one another.
  • Development usually uses code, typically C or C++, that runs on specific hardware. Some development is done in Hardware Description Languages (HDLs), including BHDL or Verilog. Python or MicroPython can be good, but many find its required "garbage collection" to be a problem.
  • Development can involve low-level “bare metal” code or a “real-time operating system” or RTOS.
  • Typically, developers must have a deep understanding of electronics or electrical engineering - the ability to read and understand schematics.
  • Developers are writing code that may need to last for several years in the field without disruption or glitches.
  • Some development targets ultra-low-power applications - where a device needs to run on a single battery for many years. This type of firmware may involve additional hardware and firmware configuration, specific to battery-powered devices, and lots of testing.

What is the Future of Firmware?

  • Firmware still relies heavily on tools and protocols that have been around for a long time, most of them since the late 80s. Firmware is designed to have a long life and not to fail. The mission-critical nature of firmware slows the adoption of new technology.
  • Firmware development is slowly catching up with software development in terms of tooling, developer support, best practices, etc. More focus on unit testing, continuous integration (CI), building servers for firmware releases, and better IDs.
  • Better tools and services - i.e., Zephyr, Memfault, Goliath, Edge Impulse, etc
  • On-device machine learning, even capable on battery-powered devices - allows for object detection, voice detection, and recognition, predictive maintenance.
  • Energy harvesting hardware will enable devices to run without batteries.
  • Continued focus on flexible/portable firmware due to hardware constraints and chip shortages. Necessity as the mother of invention and all that.
  • Focus on more automation for testing
  • Low-code is an approach to software development that optimizes the development process to speed up delivery. With low-code now coming into use for designing firmware, you can automate the application process to streamline the deployment of various solutions.

Conclusion

As you can see, firmware is perhaps the most significant IT vulnerability facing digital product users. Most companies and individual users are aware of letting their computers and other devices have automatic software updates. Most manufacturers and software developers encourage doing so. However, most people and companies do not engage in the often very manual process of updating firmware. It can be challenging even to find updates for your firmware and risky for the inexperienced to attempt at all. Firmware needs to become as easily and unthinkingly updatable as software. Microsoft has updated its Windows 10 and 11 computers to be more secure on this issue, but the user must act as well.

Or click here to learn more ->