Firmware vs Embedded Software: Explained with Examples!

In this article, let us learn what the term “Firmware” means and see how that differs from the terms “Embedded Software”. Let us also see how these 2 types of code fit into the world of “Computer Software” with the help of a few examples!

Embedded Software and Firmware are 2 terms you will find often used interchangeably in the industry when we talk about code that is running on a microcontroller.

But is there a difference between these 2 terms? Or are “Firmware” and “Embedded Software” just 2 terms that mean the same thing? This article is about answering this question!

I have written this article keeping beginners in mind, hence I have tried not to use too much “Technical Jargon” in this article. So, let us begin!

For those of you in a hurry, here is the short version of the answer!

The Short Version of the Answer

Both “Embedded Software” and “Firmware” are technically sub-classes of computer software. Other than the fact that both these software run on a microcontroller, firmware has some major differences from his Embedded Software cousin. The table below shows the main differences between Firmware and Embedded Software.

FirmwareEmbedded Software
Firmware is a layer of software on top of which operating systems and other applications runEmbedded software is stand-alone software capable of running the entire system which might or might not include an Operating system
Firmware is usually found in general purpose computing devices like smartphones, PCs, laptops, etc.Embedded software is usually found on special purpose computing devices like Embedded Systems
The firmware does not include the end applicationEmbedded software includes the end application
The firmware is not the only software that runs on the systemEmbedded software will be the only software that runs on the system
Firmware is stored in a flash memory either inside or outside of a microcontrollerEmbedded software is also stored in a flash memory either inside or outside of a microcontroller
A typical example of firmware is the software that comes with a computer motherboard A typical example of Embedded Software is the software that runs an mp3 player.
Firmware vs Embedded Software

But like I said, we will find these terms used interchangeably in the industry. For example, if you find a job ad saying they need a “Firmware Engineer”, they might need either a “Firmware engineer” or an “Embedded Software Engineer” and same goes for job ads saying they need an “Embedded Software Engineer”. So, consult with the person posting the job ad to learn what their product is and what your job responsibilities will be.

If you did not completely understand the above table, don’t worry as that is just the short version of the answer. Read on for the longer version of the answer below where I try to answer the following questions

  • What is firmware?
  • How firmware helps other software layers by abstracting hardware?
  • What are some examples of firmware?
  • What is Embedded software?
  • What are some examples of Embedded software?
  • How firmware differs from Embedded software?

So let’s continue with more informative version of the answer!

Firmware vs Embedded Software

Typically software is built in the form of layers. Typical layers of software is shown in the figure below.

On a typical computer, in terms of how far the software operates in terms of distance to the hardware, software can be classified into the following 4 types

  • Firmware
  • operating systems
  • device drivers and
  • applications

We use this layered approach because each layer of software requires expertise with specific technologies and knowledge on specific algorithms. So a typical team/organization usually focuses on only one of these layers to produce the best possible software product!

As you can see, the layer just above the hardware is called Firmware. Let’s learn more about what firmware is!

Firmware

What is Firmware? Firmware is a computer program that is written to work directly on specific custom hardware and it lives in non-volatile memory such as a flash chip and it is executed directly from it. The job of the firmware is to make the hardware accessible to the operating system.

The firmware takes the physical hardware and presents it to the operating system, which then builds on top of it. In other words, Firmware can be thought of as the glasses through which the operating system can see the actual hardware!

The reason behind the name “Firmware”

There are 2 ways of thinking about this naming convention. The first way to think about this is that Firmware is a special program that sits between the hardware and all other types of software.

The second way of thinking about this naming convention is that it is not “hard” to change, at the same time it is not “easy/soft” to change. Hardware is hard to change, usually, the only way is to buy a new one and replace the old one. Software is easy to change. You can always install applications on your smartphones and computers with a few clicks.

But to change/update the firmware is not impossible like hardware, at the same time it is not as easy as changing the other types of software.

Before we can understand why we need to take care of the device and make sure the device has enough power while the firmware is getting updated, we need to understand the types of memory that are used to store firmware.

Types of Memory used to store Firmware

Originally Firmware is written on Masked ROMs, which is a special type of memory that can be programmed/written-data-to only once. The products were then shipped with these unchangeable programs called firmware and they run for ages till the device goes out of use.

The first replacement of Masked ROMs came in the form of EPROM which can be erased by exposure to UV light and then reprogrammed as required. Then came EEPROMs which used electricity to change the contents. Nowadays the Masked ROMs have been replaced with Flash memory, which is cheaper and serves the purpose. (You can refer to this article to read more about the different types of memory.)

Embedded Software

What is Embedded Software? Embedded software is code that runs on custom-built special-purpose hardware which is designed to perform a single well-defined duty again and again.

Computing devices can be broadly divided into 2 types

  • General Purpose computers &
  • Special Purpose computers

General Purpose computers, as the name suggests has generic hardware, and can be used for multiple purposes. For example we can use our laptops to browse the internet, write documents, make calls etc.

Special purpose computers, as the name suggests have a specific purpose. For example, a Bluetooth headphone’s one and only duty is to connect and receive music from another device via Bluetooth and play that out for us. You cannot install any apps on the Bluetooth headphone to change the behavior of the device. Hence the software that controls the Bluetooth headphone is Embedded Software.

ExampleEmbedded Software inside the MP3 player

Not so long ago, before the domination of smartphones, we had a special class of devices just to play music known as mp3 players. On mp3 players, we could upload songs and listen to them all day long through headphones.

mp3 player

They had a very simple interface with 5 buttons. One button to play/pause music(which also acted as a power button while long-pressed), 2 buttons to go-to next/previous mp3 song, and 2 more buttons to increase/decrease volume.

Compared to general-purpose devices like smartphones, the job of mp3 players is very simple, specific, and straight forward, which is to play music! The entire hardware is custom built with flash memory to store digital mp3 files, a good Digital to Analog Converter (DAC) to convert this digital signal into an analog signal, then this analog signal is then fed into the 3.5mm earphone jack.

Because of the simplicity of the device in terms of both hardware and the end-application, the software stack that runs this is also simple in terms of design. The figure below shows the software stack of an Embedded Device.

We have made a YouTube video explaining the class of devices known as embedded systems which you can find below.

How Embedded Software differs from Firmware?

As you can see, when we talk about Embedded software, we talk about software that is a stand-alone software, running on a given device which does something useful!

But Firmware on the other-hand acts as a base for other software to build upon. So if you have a motherboard running a firmware, all you can do is get into UEFI/BIOS settings of your computer. To actually do the job your computer needs to do you would need more software like an Operating System like Linux or Windows and applications

Let us have a look at the software stacks of a general-purpose computer and Embedded Devices side by side!

As you can see, Firmware is one of the software layers needed to make our general purpose device do its duty whereas Embedded Software is the only software needed to make our embedded device do its duty!

I hope by now you can understand the differences between Firmware and Embedded Software. Let us have one final look at our table of differences before we end this article.

FirmwareEmbedded Software
Firmware is a layer of software on top of which operating systems and other applications runEmbedded software is stand-alone software capable of running the entire system which might or might not include an Operating system
Firmware is usually found in general purpose computing devices like smartphones, PCs, laptops, etc.Embedded software is usually found on special purpose computing devices like Embedded Systems
The firmware does not include the end applicationEmbedded software includes the end application
The firmware is not the only software that runs on the systemEmbedded software will be the only software that runs on the system
Firmware is stored in a flash memory either inside or outside of a microcontrollerEmbedded software is also stored in a flash memory either inside or outside of a microcontroller
A typical example of firmware is the software that comes with a computer motherboard A typical example of Embedded Software is the software that runs an mp3 player.
Firmware vs Embedded Software

This time when you read the above table, I hope everything made sense!

And with that I will stop this article!

Hope you enjoyed reading this article and learned something useful!

Feel free to share this article with your friends and colleagues!

Here are some of my other articles that might interest you!

Related Articles

Embedded Software Explained with Examples!

A Clear-Cut Explanation To Embedded Linux..!!

Photo of author
Editor
Balaji Gunasekaran
Balaji Gunasekaran is a Senior Software Engineer with a Master of Science degree in Mechatronics and a bachelor’s degree in Electrical and Electronics Engineering. He loves to write about tech and has written more than 300 articles. He has also published the book “Cracking the Embedded Software Engineering Interview”. You can follow him on LinkedIn