Nazim
Nazim

Reputation: 406

What is real difference between Firmware and Embedded Software

I am searching real difference between firmware and embedded software.

On the internet it is written for firmware is firmware is a type of embedded software but not vice versa. In addition to that a classic BIOS example it is very old.

They both run in non-volatile memory. One difference is Embedded software like an application programming that has an rtos and file system and can be run on RAM.

If i dont use rtos and RAM and only uses flash memory it means my embedded software is a firmware, it is true?

What actually makes real difference its memory layout.

The answers on the internet are lack of technical explanations and not satisfied.

Thank you very much.

Upvotes: 2

Views: 4756

Answers (1)

Clifford
Clifford

Reputation: 93446

They are not distinctly separate things, or even well defined. Firmware is a subset of software; the term typically implies that it is in read-only memory:

  • Software refers to any machine executable code - including "firmware".
  • Firmware refers to software in read-only memory

Read-only memory in this context includes re-writable memory such as flash or EPROM that requires a specific erase/write operation and is not simply random-access writable.

The distinction between RAM and ROM execution is not really a distinction between firmware and software. Many embedded systems load executable code from ROM and execute from RAM for performance reasons, while others execute directly from ROM. Rather if the end-user cannot easily modify or replace the software without special tools or a bootloader, then it might be regarded as "firm". If on the other hand a normal end-user can modify, update or replace the software using facilities on the system itself (by copying a file from removable media or network for example), then it is not firmware. Consider the difference in operation for example in updating your PC's BIOS and updating Microsoft Office - the former requires a special procedure distinct from normal operating system services for loading and running software.

For example, the operating system, bootloader and BIOS of a smart phone might be considered firmware. The apps a user loads from an app-store are certainly not firmware.

In other contexts "firmware" might refer to the configuration of a programmable logic device such as an FPGA as opposed to sequentially executed processor instructions. But that is rather a niche distinction, but useful in systems employing both programmable logic and software execution.

Ultimately you would use the term "firmware" to imply some level of "permanence" of software in a system, but there is a spectrum, so you would use the term in whatever manner is useful in the context of your particular system. For example, I am working on a system where all the code runs from flash, so only ever use the term software to refer to it because there is no need to distinguish it from any other kind of software in the system.

Upvotes: 3

Related Questions