Embedded software applications are specialized programming within non-PC devices – either as part of a microchip or as part of another application that sits on top of the chip – to control specific functions of the device. Unlike PC applications, which can be installed on a variety of computer systems and modified to provide different levels of functionality, embedded software has fixed hardware requirements and capabilities. It is created exclusively for the particular device that it runs on, with processing and memory restrictions tied directly to that device’s specifications.
Although the two terms are sometimes used interchangeably, "firmware" is actually a type of embedded software. While embedded software is used for a specific functionality that contributes to the overall purpose of the device, firmware serves as a minimalistic operating system (OS) that provides the instructions for the device's control, monitoring, and data manipulation functions.
Typically, the firmware is developed alongside the device’s hardware (chip-design) to optimize the operations for power-consumption, speed, and security. After the firmware and hardware are finalized, embedded software applications are developed to execute functions within the finished product or system. To help you distinguish between the two, remember: All firmware is embedded software, but not all embedded software is firmware.
The hardware components within a device that are running embedded software are referred to as an "embedded system." Some examples of hardware components used in embedded systems are power supply circuits, central processing units, flash memory devices, timers, and serial communication ports. During a device's early design phases, the hardware that will make up the embedded system – and its configuration within the device – is decided. Then, embedded software is developed from scratch to run exclusively on that hardware in that precise configuration. This makes embedded software design a very specialized field that requires deep knowledge of hardware capabilities and computer programming.
Almost every device made with circuit boards and computer chips has these components arranged into a system that runs embedded software. As a result, embedded software systems are ubiquitous in everyday life and are found throughout consumer, industrial, automotive, aerospace, medical, commercial, telecom, and military technology.
Common examples of embedded software-based features include:
Embedded systems are typically classified in two ways:
Even though there are many types of embedded systems, they all share the same beneficial features and design characteristics.
All embedded systems are task specific. They execute the same pre-programmed function throughout their usable life and cannot be altered.
All embedded systems are designed to be highly reliable and stable. They are required to perform their task with consistent response times and function throughout the lifetime of the device that houses them.
All embedded systems are high-efficiency. The resource requirements of embedded software should never exceed the capacity of the hardware it is installed on, and the hardware's specifications should never exceed the bare minimum requirements of the embedded software.
In automotive electronics, complex real-time interactions occur across multiple embedded systems that each control functions such as braking, steering, suspension, powertrain, etc. The physical housing that contains each embedded system is referred to as an electronic control unit (ECU). Each ECU and its embedded software is part of a complex electrical architecture known as a distributed system.
By communicating with each other, the ECUs that make up a vehicle’s distributed system can execute a variety of functions like automatic emergency braking, adaptive cruise control, stability control, adaptive headlights, and much more. A single function might need interactions across 20 or more embedded software applications spread across numerous ECUs connected by multiple networking protocols. Complex control algorithms deployed with the embedded software ensure the proper timing of functions, needed inputs and outputs, and data security.
Common examples of automotive software application-based features include:
The Electronic Control Unit or ECU is comprised of a main computing unit with chip-level hardware and a stack of embedded software. However, there is an increasing trend among automotive manufacturers of designing ECUs with complex integrated circuits that contain multiple computing cores on a single chip – what is referred to as a System on a Chip (SoC). These SoC can host a multitude of ECU abstractions in order to consolidate hardware. The software stack for an ECU typically includes a range of solutions, from low-level firmware to high-level embedded software applications.
|Embedded software application||Control algorithms, processing, services|
|Application framework||Security & safety frameworks|
|Operating environment||AUTOSAR classic, AUTOSAR Adaptive, Inputs/Output channels|
|Embedded virtualizations||Real-time OS, ECU abstractions|
|Firmware||Boot-loaders, secure-storage, secure-threading|
|Hardware||Silicon based devices, micro-controllers, single or multiple layered boards|
In 2017, Siemens acquired the Mentor Graphics company – as well as their portfolio of embedded software, which includes:
In 2021, the Mentor branding was discontinued. However, all of the tools are still offered and supported by Siemens with all of the same functionality that enables developers to create robust and feature-rich embedded systems.