"Embedded software" is 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 "application software," 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.
ECU or the Electronic Control Unit is the main computing unit with needed chip level hardware and a stack of software. There is an increasing trend of building complex systems on a signal chip, also referred to as System on Chip (SoC) with multiple computing cores. These SoC can host a multitude of ECU abstractions in order to consolidate hardware. These also at times referred to as DCU or domain control unit, domain in this case would chassis for example. All chassis systems ported to a single massive SoC. A software stack typically would include solutions from lowest level firmware to high level software applications ported on this hardware.
|STACK||What it does?|
|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|
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 designed 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 application-based features include:
Common examples of automotive software application-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’s installed on, and the hardware's specifications should never exceed bare minimum requirements of the embedded software.