Firmware vs device drivers vs application software : are they all the same ?

Tobias Aguiar
3 min readNov 30, 2022

--

typical architecure of different softwares

Yes, you guessed correctlty, they are all softwares. But if they’re all software, why do they have different names? Let’s find out in this lecture!

I have to admit that wasn’t easy for me to clarify what each of these softwares are and why they’re useful. To introduce this topic : they were given different names simply because they have different purposes! So let’s try to distinguish their diffferences.

Firmware : the devices’ savior ?

Not everyone knows the term firmware, but i’m pretty sure that 99% of people know a traffic light, a digital watcher, mobile phones, webcams.. the list goes on. Well, all of these devices and many more, work with the help of this thing called firmware.

So, to introduce, I’d say that firmware is the software that is capable of making an electronic devices work their specific functionalities. But how so? We can’t see it, but these electronics devices are made of special physical pieces, called hardware. Their function is to give a specific functionality, or multiple ones, with all pieces working together. However, some of these hardware operate in very complex way, so to make these devices work properly, engineers make use of a software, which communicates directly with the hardware, in order to give an abstraction to its complexity and control the pieces so the device can execute it’s functions.

Device driver : the guide for the upper layers ?

Have you ever bought a product that was so hard to use that you needed to get a manual to have a good understand of how it works and how use it properly?

I won’t say that this analogy is 100% true, but we could say, to some degree, that you are like the upper software layer, that can vary. The manual is the device driver, and the product is like the electronic hardware. The device driver is a specific software which tells you how to use the hardware resources, and how to make them available.

Application software : the most user-friendly one?

The last one is famously called application software, which is the software that is the closest layer in contact with the user, some applications work directly with the user, and others indirectly. As it shows in the picture in the beginning of this article, the application is on the highest layer of the softwares, and is the layer with less contact with the hardware among all of them.

Conclusion

As we could see :

  • They’re all software, but with different names because they act on different layer of a system.
  • They also have different purposes, some collaborate closer with the hardware, while others are some layers away from it.
  • These layers mentioned are not the only existant ones, there is plenty of others, such as the Operating System (OS), which is topic for another article.

What is also interesting to mention, is the fact that the higher your layer you’re working on, the easier is to change your software. Yes, it means firmware and device drivers are more difficult to change compared to the application software. Indeed, firmware is the software which is changed the less often. Obviously, there is way more to discuss about this topic, this is just a little introduction.

Hope you find the lecture useful. Happy reading/coding! 😄

--

--

Tobias Aguiar

Software developer | Trying to make complex concepts look easy | Want help or discuss about embedded software development? Email me! tobi.aguiar01@gmail.com