It’s Firmware. Don’t Call It Software.
December 12, 2022
Embedded industry experts will tell you that firmware is everywhere. As a member of the embedded community and someone who has enjoyed a career as a firmware engineer, I would certainly agree with that statement. However, the issue is that no one understands or can define what firmware actually is.
It’s this ambiguous engineering necessity, especially in the age of IoT, yet the industry can’t decide on a definition. For clarity, let’s first define what firmware is, and what it’s not.
Firmware was once considered from the perspective of a closed device, not easily upgradeable or programmable and with very limited memory. Today firmware is the code that translates between what we see and feel, the physical world, and the software that performs the business logic.
Red: Physical device. Blue: Electronics. Orange: Firmware. Green: Software
As a real-world example, take a modern thermostat, one that’s connected to the Internet via the Cloud. It interacts with a mobile app, connects to Wi-Fi, and oh yeah, adjusts and displays the temperature. Something needs to be that intermediary between the physical world, the temperature sensor, display, and HVAC unit, and the software. That’s the firmware. For technical folks, this is an oversimplification because it defines some of the code we often consider firmware as software. For the sake of communicating outside our industry, let’s accept this definition because it frames the discussion around the most critical aspect of writing firmware—the control of engineered systems.
In fact, from a different perspective, you could say that firmware is a career choice, one that is a combination of engineering, especially electrical engineering and software development. From our simple example, you can see that a competent firmware engineer must have a solid understanding both disciplines. As evidence, when I recently conducted an informal poll of firmware engineers asking about their backgrounds, about 85% of the respondents said their background was in electrical engineering and not software development.
You still might be asking if it’s actually software, and the answer would be no. While this is an area that’s often misrepresented, particularly by less technical folks, saying that firmware is just software would be too limiting in scope. More accurately, firmware is a type of software that lives on the end device and contains the instructions that allow the electronics to interface with the outside world as well as other internal electronic components.
Another confusion arises because there are no universities where you can specialize in and receive a degree in firmware engineering. Obviously, that’s not the case with software and the various hardware engineering disciplines.
Why The Confusion?
The burning question then becomes, why is firmware so misunderstood? There are actually a few reasons. The biggest reason is that the general public lumps it together with software, and that’s just wrong. Case in point: when auto makers have had “issues” with their vehicles, the problem was usually in the firmware. Yet the media, and then the general population, perceived it and defined it as a software problem.
For those of us old enough to remember the Y2K problem, when our computers had to roll from 1999 to 2000 and not back to 1900, it was the firmware that needed to be updated/replaced/fixed. But it was widely reported as a software problem. In reality, most firmware engineers were told to only use two digits rather than four to conserve what at that time was precious and expensive memory space. Clearly, that was a mistake.
Speaking of the Y2K crisis, that actually served as a welcome wakeup for many OEMs, who really need to be manufacturing products with better firmware. Lots of new ideas floated around, from object-oriented programming to real-time operating systems, replacing the concept of what became coined by firmware engineers as a “super loop” architecture, where all the instructions for a program are maintained within one big “while” loop.
In addition, integrated development environments (IDEs) and software development kits (SDKs) have come a long way in recent years. For example, they allow the developer to operate within an environment in which he or she is comfortable, making firmware easier to write. In some cases, the automated tools do some of the writing for you, such as creating drivers. And many of the microcontroller vendors have created high-quality driver libraries to support their products.
Beyond simply writing and maintaining firmware, there’s another important aspect that engineers must be cognizant of; writing secure firmware. That’s a topic unto itself that we will discuss in another blog. But make no mistake; writing secure firmware is (and should be) a top priority. And unfortunately, the situation is getting worse rather than better.
Other topics we will tackle here include how to meet the growing demand for firmware, and how we can better educate our existing (and future) workforce of engineers to write better, more secure firmware. But today, implementing these technologies requires on-the-job training because it’s simply not taught in the mainstream university curriculums and there is no certification program.
Help Me, Help Us, Help Our Community
For those of you who agree with this perspective, here’s my ask: help me, help us, help our community come together and consistently define and explain firmware for what it is and what it does. It’s not software. If we align and define from the same viewpoint, we can turn firmware from invisible to visible and give the discipline the respect it deserves in this era of mass device and IoT adoption. Only acting in unity can we educate the media and the general public as well.
On your mobile device, text yesfirmware to 877-379-4135 join the movement to make firmware visible.