Definitely not your father's firmware -

Definitely not your father’s firmware


Here is my proposed definition of firmware:

‘Firmware is the art of designing software that successfully controls and/or monitors the physical and natural world through electronics.’

It’s not your father’s definition is it? But I would argue the definition has actually changed over the years.

Words change their meaning when the old meaning no longer has value or is obsoleted by the modern world. This is called (yes there really is a name for this) etymology. For example computer used to mean a person who computes.

Argh! My ears cannot hear it! English!! Engineers hate English! It’s our kryptonite! Which is also why engineers hate writing things down or creating requirement documentation. But a poorly written requirement will wreak havoc and chaos on your project.

So does a poor definition wreak havoc!

So as much as we all profess our love of math and hate (ok have a strong distaste for) English, having no clear definition for what hundreds of thousands of engineers use to define their profession is not helpful.

What is the present definition of the word firmware you ask? Oh it’s a mess. I did some research on this. I’ve also done various surveys on the word through the firmware LinkedIn group. None of it’s pretty.

I went searching for the definition at IEEE’s standards definition database. Sound like the logical source right?

I found 11 different definitions.

Yes 11 variants of a definition that is no longer relevant. Regardless, the going theme seems to be software that resides in non-volatile storage that can be read only by a computer.

Really. Or should I say really not helpful.

How does this convey anything useful and distinguish it from software? Is this what you tell people when they ask you what firmware is? How is this definition really different then saying firmware is software? All that is added to the definition is the software’s residence — that being non-volatile memory (well at least until you move said firmware into RAM, but I digress).

In an attempt to improve things, many have abandoned the use of the word firmware and replaced it with embedded software. Not sure how this solves anything. In fact I think it makes matters worse. It ties it even tighter to software and lessens the useful distinction.

Yet how many computer scientists do you know that write firmware? I’ve done studies on this and it’s very few. In a recent survey I did of degrees held by firmware engineers, I found that of 377 sampled, 13% held a bachelors in computer science. The great majority (43%) had a bachelor’s degree in electrical engineering. About 80% had an engineering degree of some kind. Clearly there is an important engineering role in firmware that is sorely missing from 1) your father’s definition, and 2) definitions characterizing it as software, which is not a field of engineering.

So firmware is a field of engineering. No, you can’t call it software engineering since this is the engineering of software itself. In fact I still fail to see how calling us ‘embedded software engineers’ is helpful since embedded just categorizes a field of software engineering.

Firmware engineers must have a strong grasp of engineering first and foremost. After that they need a good understanding of electronics. I say this because a well-written piece of firmware should have a driver layer that connects directly to electronic circuits. Also a well-written piece of firmware should also have some kind of device layer where the devices are often electronic sub-systems. For example if you are to measure voltage, you should understand at a high level the electronics that create that voltage. Much of the application layer must rely on engineering concepts. Similarly, if I am controlling a mechanical system through electronic stimulus, I need to have some understanding of both electrical and mechanical engineering.

Eventually you escape the engineering such as in a GUI implementation on a TFT LCD touchscreen. So at some point it departs from engineering yet remains a science — computer science in fact. It is at this point where the ‘software’ that resides in the non-volatile storage really is purely software.

So which definition do you think would help clarify to friends and family, organizations, corporations, colleges and Universities?

'Software that resides in non-volatile storage '?


‘Firmware is the art of designing software that successfully controls and/or monitors the physical and natural world through electronics.’

Back to the trenches! Thanks for reading!

Bob Scaccia is President of USA Firmware, a Software, Hardware, Firmware and IoT Consulting and Design Services Company located in Brecksville, Ohio. Bob also runs the largest Embedded Software group on LinkedIn with 14,000 members and growing and has written articles on firmware curriculum, trends, best practices and using object oriented approaches in the C language. His website is

7 thoughts on “Definitely not your father’s firmware

  1. “I'm not that sure it helps to get hung up on the semantics and definitions of fw vs sw. nnThe original difference came from fw not quite being part of the hw but also reasonably permanent. These days the tradtional definition makes little sense since mu

    Log in to Reply
  2. “Thankyou for reading my article. I do believe that definitions matter and they can obfuscate just like poorly written code. By understanding at the core what the skills need to be we will educate the public and hr types…”

    Log in to Reply
  3. “Hi BobnnSome definitions are certainly important. I think though the distinction between firmware and software is not.nnIf you spend time doing things like operating system development (clearly software) there is a huge overlap with firmware design. i

    Log in to Reply
  4. “I'm not sure that we need this distinction any more. In the past I considered firmware as something more difficult to change than software. By that, I mean the physical process of removing an EEPROM and burning it with a hex file in a programmer. These da

    Log in to Reply
  5. “Modern computers built using Von Neumann architecture and we used to say that they run Software.nSo why do not call Firmware any embedded software that runs on non Von Neumann architecture?”

    Log in to Reply
  6. “To start with, I don't consider “firmware” to be “The art of designing …”. Firmware is the resulting output of the activity.nI agree with others that “firmware” was an important distinction in the days of ROM and PROM, and perhaps that is the bes

    Log in to Reply
  7. “Maybe it's like the “Sleep Number Bed.”nYou just dial in your particular level of comfort between firm and soft. Most people think I'm dreaming when I write code anyway. -j@”

    Log in to Reply

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.