Difference Between Software, Embedded Software and Firmware
Difference Between Software, Embedded Software and Firmware
Difference Between Software, Embedded Software and Firmware
Software
Software is a set of instructions, data or programs used to operate computers and execute specific tasks.
The two main categories of software are application software and system software.
An application is software that fulfills a specific need or performs tasks. System software is designed to
run a computer's hardware and provides a platform for applications to run on top of.
An application program (app or application for short) is a computer program designed to carry out a
specific task other than one relating to the operation of the computer itself, typically to be used by end-
users.
Word processors, media players, and accounting software are examples.
Applications may be bundled with the computer and its system software or published separately and may
be coded as proprietary, open-source, or projects. The term "app" often refers to applications for mobile
devices such as phones.
System software
These software programs are designed to run a computer's application programs and hardware.
System software coordinates the activities and functions of the hardware and software.
In addition, it controls the operations of the computer hardware and provides an environment or platform
for all the other types of software to work in.
The OS is the best example of system software; it manages all the other computer programs. Other
examples of system software include the firmware, computer language translators and system utilities.
Firmware
Embedded Software
Embedded software needs to include all needed device drivers at manufacturing time, and the device
drivers are written for the various hardware devices.
These device drivers, called BSP (Board support package), form the layer of software containing hardware-
specific drivers and other routines that allow a particular operating system (traditionally a real-time
operating system, or RTOS) to function in a particular hardware environment (a computer or CPU card),
integrated with the RTOS itself.
The software is highly dependent on the CPU and specific chips chosen.
Most embedded software engineers have at least a passing knowledge of reading schematics, and reading
data sheets for components to determine usage of registers and communication system.
How Embedded software work
Each device will have its embedded software developed using a specific programming language, which is
typically “C” or “C++.” Higher level devices can also support Python, JavaScript and other languages.
The embedded software can include its operating environment and application software.
More complex devices will operate using commercially available operating systems such as FreeRTOS,
uC/OS, Thread, Works, and many other variants.
Embedded software is developed using specific tools as shown below, each performing a different role to
help create and build the software.e.g editor, compiler etc.
Examples of Embedded Software
Embedded varies significantly based on the device it is controlling. Here are a few more examples of
embedded software use and functionality:
The anti-lock brakes of your automobile
The motion detector of a security camera
The auto-focus on your digital camera
The disc drive of a computer
The industrial automation functions of a factory
The control functions of a video game controller
The smart lighting control in homes
Example
With the advent of the digital high-definition TV (HDTV) format, TVs needed microprocessors for
the incoming digital video signal and to generate the red/green/blue values (also digital) for each
pixel in the display. Firmware also handled converting the digital audio signal to analog output
for the speakers. This required firmware, but not what would be properly called embedded
software. Embedded software comes into play in “smart TVs.”
Smart TVs still have firmware for the low-level signal processing tasks, and more firmware t
operate the wired or wireless network interface and communications with the remote control
(which also now has firmware). But smart TVs also have operating systems; usually, Android or
Roku as well as apps that are preinstalled on the TV or that can be downloaded from the
internet. These apps—the embedded software—enable a higher level of user interactivity
beyond changing the channel and adjusting the volume.