Embedded software is a program written to control specific functions of devices and products that are not PC devices. The products and devices whose functions are controlled by embedded software are called embedded systems.
Essentially, embedded software is made specifically for the hardware that it runs on, and it is constrained by the hardware’s CPU and memory capabilities.
Although the term embedded software is used interchangeably with the term firmware, it is important to note that firmware is a type of embedded software. Therefore, all firmware programs are embedded software, while not all embedded software applications are firmware programs.
Embedded software includes various components depending on the purpose and complexity of the embedded system it is being designed for. However, a comprehensive embedded software package includes the following components:
- Firmware – It is developed alongside the hardware part of the embedded system to ensure that the hardware is optimized for speed, security, and power consumption. Once the firmware and hardware are completed, the embedded software components are developed to control specific functions within the embedded system
- Operating system – This embedded software component sets the rules and provides the middleware and application software with the environment to operate in. The operating system can be a general-purpose operating system (GPOS) like Windows CE, Windows 10IoT, Android, Linux, ThreadX, or a real-time operating system (RTOS)
- Middleware – This acts as the mediator between the operating system and the application software and enables the communication between the two
- Application software – This is the software part that performs the functions of the embedded system and interacts with the user where necessary
Embedded software for large complex embedded systems contains the majority of all of the above components, while embedded software for simple embedded systems contains some components.
Examples of Embedded Systems
Some examples of hardware devices whose functions are controlled by embedded software include:
- Washing machines
- Medical equipment
- Security cameras
- Mobile devices
- Cars
- Aircraft’s fly-by-wire control systems
- Smart home devices
Characteristics of Embedded Software
- All embedded software is task-specific since the embedded systems are made to execute the same function(s) throughout their lifetime
- Embedded software includes all the drivers needed by the embedded system to operate, and these drivers are included during manufacture and are not downloaded later as in the case of general-purpose applications like the ones used in our personal computers. These drivers are called Board support package (BSP), and they allow the operating system made for the device to function as required
- The hardware capability requirements for an embedded software are fixed, and third-party software and hardware are strictly controlled
Programming Languages used to Write Embedded Software
The following programming languages are used to write embedded software:
- C
- C++
- Embedded C++
- Rust
- B#
- C#
- Golang
- Python
- JavaScript
- Lua
Tools used in Developing Embedded Software
The following tools are used when developing embedded software:
- Compiler and Assembler
- In-circuit emulators or debuggers
- Math workbenches to simulate the mathematical aspects of the digital processing part of the embedded software
- System-level modeling and simulation tools
- Modeling and code generating tools
- Programmer device containing programmer hardware and programmer software. It is used for installing the developed embedded system code into the microcontroller of the embedded system