Difference between Firmware and Software

Strolling the dark alleys of the Internet for the difference between Firmware and Software?

You’ve finally knocked on the right door, in the next couple minutes, that questions gets answered once and for all.

What is the Difference between Firmware and Software?

Firmware and software aren’t completely unrelated, instead, they are very much the same thing with just some very distinct differences.

Consider them two brothers, with different attitudes, choices, and hobbies. Let’s start with the most-basic possible differences between firmware and software, something that a 5th grader can understand-

The answer actually lies in the question as well. Going by nomenclature:

  • FIRMware: Denotes something that is “Firm”, meaning something that’s harder than something “soft” but not as hard as “HARD” (as in Hardware).
  • SOFTware: Denotes something that is softer than FIRMware.

Following the same definition, we can say that Software is something that can be easily changed, upgraded and in other words is more prone to change than Firmware.

Firmware on the other hand, being firmer than software, isn’t as easy to change or upgrade, but isn’t totally rigid as hardware either and can be changed with slightly more advanced skills.

So, Software is more temporary as compared to Firmware, pertaining to the fact of the hardships and complexities that arise when changing a firmware as compared to changing a software.

Now that’s a basic, laymens’ definition. In case you aren’t satisfied yet, here are some better explanations of the differences between Firmware and Software.

A More Technical Approach

Wikipedia defines software as- “software is a part of a computer system that consists of data or computer instructions

And for firmware, it says- “firmware is a type of computer program that provides the low-level control for the device’s specific hardware”.

So the one difference between firmware and software we can make right from the definitions is that software deals mostly (although not always) with other software (like with the OS), while firmware is a component more directly associated with the hardware for which it’s built.

The software is generally mega or gigabytes in size, firmware on the other hand generally sits in the Kilobytes brackets, making it comparatively much lighter than software.

(Although it shouldn’t be a concrete comparison metric, as it’s more like a general scenario but firmware in the range of MBs and GBs exist today as well).

Although the irony here is, even though software is generally the heavier one, it’s easier to change while firmware even though being the lighter component isn’t as easy.

Another fact worth singling out here is that, software is more commonly used and interacted with by users, while firmware is something you don’t generally directly encounter while using a computer or any other system.

During my research for a better answer, I actually pinned this question to my friend Chris who is a software engineer, and he gave me a very logical and calculated answer.

After translating his explanation in words we all can understand, it reads “Software designed for specific hardware is firmware”.

So that gets us another difference that firmware is designed for pre-set, specific hardware while software is more liberal and might run on more than one type or model of hardware.

Also, software is made to accept frequent updates, and changes. For e.g. you may update the version for your Ms-Word or Photoshop frequently, but firmware is rarely updated and isn’t generally built with the expectation of it ever requiring an update.

Software serves a wider range of features and purposes, just like Paint, Ms-Word, Google chrome etc. While firmware has a more specific, pin-pointed purpose, that of assisting a certain hardware perform a certain function.

So in a nutshell, the only primary, absolutely concrete line that can be drawn between a firmware and software is based on where the “code” resides. If it resides on a chip or on a hardware (e.g. EEPROM or Flash memory), it’s firmware, if it’s on a storage device such as hard-disk, it’s software.

This last point also brings out another difference between firmware and software that , because a firmware is stored on EEPROM or flash memory, it isn’t removed from memory once the hardware is turned off, as it’s permanent memory.

But the software, in most cases and in the general meaning ceases to exist for as long as the hardware is turned off as it resides on the hard-disk.

How are software and firmware connected?

We’ve scribbled down so many differences between firmware and software, but the reality is, both firmware and software are rigorously connected.

Firmware is software as well. Software is just a “broader” term, which denotes any and all software, while firmware is the software designed and embedded into specific hardware.

The above definition might make firmware look like the underdog; well it’s not the case. In fact, firmware is what makes the use of software possible by the hardware.

Firmware is just the low-level (basic) software, which makes the basic functionalities of the hardware possible, without the hardware functioning properly; there won’t be a platform for the software to run.

Also, a Firmware is built into the device at the time of its manufacture and helps the hardware to run, the functionalities of an OS (operating system) are similar as well, as it helps other software to run on a system.

So bottom line, firmware is also a type of software, with its own features and attributes.

Why is Firmware Needed?

We’ve pondered over the differences between firmware and software, now let’s talk see why a Firmware is needed to begin with, right?

When any CPU (be it for a computer, mobile phone, PDA or anything else) boots, it generally fetches data from memory.

Now because the general software is offline at the moment, the hardware can’t use that data to boot or make its binary choice.

That’s where firmware comes to the rescue, because the firmware is pre-programmed into a specific address on the CPU, it’s this data that let’s the CPU do something on its own without using any other software.

So in other words, a firmware can be used while or for loading an OS (which is a software), or as in the case of cell-phones, both the OS and the firmware are stored at the same location, and the boot-time code of the firmware is used to load the OS.

Earlier, firmware used to reside in un-modifiable ROM, but since EEPROMs and memory cards came to common hands, now it’s mostly placed in flash memory and allows for modifications.

Bottomline, a firmware isn’t a full-featured software (it’s complete it itself, but just not as wide or diverse as a software) and simply works as the ignition for the hardware. It either initializes the hardware, blocks certain sectors or performs any other “basic” function.

Some examples of the importance of firmware are, they determine how fast or slow our hard-disks should spin, our hard-disks and graphics cards wouldn’t be detected without firmware, or even a WiFi card wouldn’t be able to detect a radio frequency without it.

Our TV remotes wouldn’t know which button is being pressed or which channel to tune in to without firmware either.

Most Commonly used Firmware and its Usage

It’s worth noting that nearly every electronic device, that boots up, or uses an automated kind of system, most likely has a firmware inbuilt.

Some common examples are timers in washing machines, timers in traffic lights, or most smartphones these days are able to function because of the existence of firmware.

We, as users, do not often need to change or upgrade our firmware, except some very rare and unique cases.

One such case is encountered when flashing our routers. It’s the process of upgrading our router from its stock firmware (the default firmware) to a more advanced, better alternative.

The stock firmware that comes inbuilt with most routers isn’t as advanced as a third-party firmware, and often also imposes restrictions, and so most users flash (install) their routers with a third-party firmware.

The two most popular and commonly used firmware for router flashing are DD-WRT and Tomato.

DD-WRT is a firmware that is more feature rich as compared to Tomato, but it’s also harder to setup.

Tomato on the other hand, is comparatively less feature-rich, but easier to setup.

Anyway, you can read more about the two firmware on this detailed guide on DD-WRT vs. Tomato.

Final words on Difference between Firmware and Software

So let’s wrap this article on the difference between firmware and software up. I’m sure I’ve scribbled down more than enough differentiation and explanations on how the two components differ from each other.

It’s important to understand that both the components are the two sides of the same coin, it’s just that they’re engraved and embedded differently.

To wrap conclude the difference between firmware and software, all I can personally say is, firmware is the component which is embedded in a hardware and doesn’t need frequent changes, while software is manually installed by the user (generally) and is changed more often.

Although there still are some more differences between firmware and software you could dig up, so if you do come across such differences do let us know, it helps us make these pieces better.