Embedded Software

"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.

Embedded Software

Embedded software is used for a specific functionality that contributes to the overall operation of the device

What is the difference between Firmware and Embedded Software? 

Although the two terms are sometimes used interchangeably, "firmware" is actually a type of embedded software. While embedded software, also referred to as embedded software application, is used for a specific functionality that contributes to the overall purpose of the device, firmware specifically serves as a minimalistic operating system (OS) that provides the instructions for all the device's control, monitoring and data manipulation functions. To help you distinguish between the two, remember: All firmware is embedded software, but not all embedded software is firmware. The main difference comes in while the development cycle of the two. Typically the firmware is development along with the hardware (chip-design) to optimize the operations for power-consumption, speed and security, while embedded software application is developed to comply the needs of the overall product or the system.

ECU and its Software Stack

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

Embedded Software vs Embedded Systems

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.

Why is an Automotive Embedded Software Application different?

Automotive embedded software applications are quite different than typical Embedded Software Applications that we find on smart devices such as phones, gadgets etc. In the automotive applications, real-time complex interactions across multiple-systems such as braking, steering, suspension, power-train, body-electronics etc. is extremely crucial. Each ECU (electronic control unit) with its embedded application is part of a bigger much complex electrical architecture that delivers the vehicle level complex features like automatic emergency braking, adaptive cruise control or even seemingly simple features like steering feel, lock-unlock, adaptive-headlights. A single feature might need interactions across 20 or more embedded software applications spread across multiple ECU connected over multiple networking protocols. No single automotive embedded software application performs on its own, it is always part of a much bigger system of systems. Ensuring the timing of its functions, needed inputs and outputs, data-security is the work of art of complex control algorithms deployed with the embedded software applications.

Examples of Embedded Software Application-based Features

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:

  • Anti-lock braking systems found in automobiles 
  • Image processing systems found in medical imaging equipment 
  • Fly-by-wire control systems found in aircraft 
  • Motion detection systems in security cameras 
  • Traffic control systems found in traffic lights 
  • Timing and automation systems found in smart home devices

Common examples of automotive software application-based features include:

  • ADAS (Advanced Driver Assist Systems) features like Adaptive cruise control, automatic emergency braking, lane-keep assist, traffic-assist, lane-departure warnings
  • Battery management system
  • Torque compensation
  • Steering-pull drift compensation

What are the different types of Embedded Systems?

Embedded systems are typically classified in two ways: 

  1. When based on performance and functional requirements, there are four main types of embedded systems: 
    • Real time embedded systems complete their task or output a response within a specified time – usually “instantly” or in real-time. 
    • Stand-alone embedded systems can complete their task without a host system or external processing resources. They can output or receive data from connected devices, but are not reliant on them to complete their task. 
    • Networked embedded systems depend on connected network to perform its assigned tasks. 
    • Mobile embedded systems are highly constrained systems typically deployed in small, portable devices. 

  2. When based on the complexity of the system's hardware architecture, there are three main types of embedded systems: 
    • Small Scale Embedded Systems 
    • Medium Scale Embedded Systems 
    • Sophisticated Embedded Systems (also known as Complex Embedded Systems)

Characteristics and Features of Embedded Systems

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.


Automotive Embedded Software

Automotive embedded software is increasingly displacing mechanical engineering as the differentiator in the creation of brand experiences.