What is an Embedded System Software?

For engineers that approach embedded systems design from a hardware background, configuring software for embedded systems can pose a significant challenge. Those with experience and know-how in software engineering will still need to adapt their software design and programming methodologies to meet the unique requirements of embedded systems design. 

In this blog post, we discuss the different types of embedded software that are commonly deployed in embedded systems applications. We will define and characterize a basic software stack for embedded systems and explore some of the most common applications for embedded systems in commercial, industrial, and residential contexts.

Embedded Systems: Software Embedded into Hardware

Embedded systems consist of a microcontroller or microprocessor unit on a chip with other peripheral devices, serving a dedicated function or managing a specific application within a larger mechanical or electronic system. Embedded systems consist of both hardware and software, with physical components like an oscillator, memory, and a CPU, and a software stack that can vary in complexity based on the application. 

Engineers that build embedded systems require a broad skill set that includes hardware design and development of embedded software that matches the defined requirements of the hardware specifications. Many embedded systems are designed for a limited and highly specific set of tasks or applications. As a result, new embedded systems software applications are often custom-coded to meet the unique requirements of each new project.

MRI machines used in health care facilities depend on bug-free software specifically programmed for their microcontroller-powered embedded systems.

Image courtesy of Pixabay

What is Embedded Software?

If embedded systems consist of both hardware and software then embedded software refers specifically to the software components of the system. We can further distinguish between two types of software used in embedded systems: the firmware and the application

Firmware consists of software that is written in non-volatile memory within the embedded system, such that it cannot be easily modified or erased. Most embedded systems contain read-only memory (ROM) or electrically erasable programmable read-only memory (EEPROM) where firmware is stored. Firmware is typically used for running or booting the device.

In contrast, embedded software applications allow the system to perform tasks or functions that are required for the successful application of the device. An embedded application includes control or scheduling algorithms that allocate processing power to tasks, processes, or services based on their assigned priority.

The Embedded System Software Stack

The software stack for an embedded system can vary in complexity depending on the intended application for the product. The most complex systems consist of five or six layers while simpler systems might include just two or three. A six-layer software stack for an embedded system might include the following components:

  1. Embedded software application: while other components of the software stack may be purchased or acquired as open-source, the main application is typically coded by engineers to meet the unique requirements of the project while accounting for power consumption, timing, and other constraints imposed by the hardware configuration and additional planned software elements. 
  2. Application framework: embedded engineers are enjoying increased access to application framework modules that provide prepackaged software for embedded systems. An application framework can include security features, machine-to-machine communication features, connectivity and location functionality, and other useful features. The presence of available application frameworks reduces the labor associated with programming embedded software functions.
  3. Operating environment: includes libraries, runtime, and other services needed to deliver the core application
  4. Embedded virtualizations: more complex embedded systems may use virtualization to divide processing power between several different tasks or functions. 
  5. Firmware: consists of the software components necessary to run the device, such as boot-loaders, secure storage, and threading
  6. Hardware: includes the microcontroller or microprocessor and other on-chip peripherals on a single or multi-layered board

What is an Embedded System Used For?

Embedded systems are deployed in a wide range of commercial and consumer applications across industries. While the first embedded computers were used in products like calculators during the 1960s, technological advancements of the information age have accelerated the proliferation of devices with embedded systems throughout the world. In particular, devices that use embedded systems to transmit data over the internet (known as connected devices) have exploded in popularity with applications that include smart homes and wearable medical devices.

Below, we highlight some of the most common applications for embedded systems today:

Embedded Systems in Consumer Electronics

Consumer electronics are a major product category when it comes to embedded systems, including things like mobile phones, video game consoles, printers, digital cameras, and more. There is a significant variation in the types of embedded systems that are deployed across various consumer products. The microcontroller system embedded in a digital camera, for example, might perform just a handful of highly specific functions or tasks. On the opposite end of the spectrum, mobile phones are powered by embedded systems that must be configured to run many different types of mobile applications (apps). The operating systems and architecture for these more complex embedded systems are more similar to those of desktop computers.

Embedded Systems in Smart Home Products

Smart home and smart home security products are driven by embedded systems that rely on specially programmed embedded software programs. Smart home products are a growing market segment for embedded systems engineers as consumers seek out low-cost solutions that enhance home safety and protection while providing convenience through automation. 

There are several examples of smart home products that rely on embedded systems, including home security cameras that upload the video to the cloud or motion sensors that activate an alarm when an intruder is detected. Even smart plugs that enable voice activation or timer control of home audio and lighting systems depend on embedded software and systems.

Embedded Systems in Aerospace and Defence

Embedded systems are increasingly being deployed in military and aerospace applications, especially in aircraft navigational computers, GPS tracking computers, and vehicle guidance systems. On the commercial side, in-flight entertainment systems, flight data recorders, and other aircraft safety features can be designed with embedded systems that capture information from their environment using sensors and convey information about the vehicle status to the operators or pilot. Unmanned aerial vehicles (UAVs) are also powered by embedded software systems.

Embedded Systems in Communications

Many types of electronic communication devices contain embedded systems, including home and business networking products that facilitate connections between network endpoints and the worldwide web. Products such as routers, network hubs, and satellite phones contain embedded systems that incorporate internet connectivity features. Engineers develop specific embedded software applications that allow these devices to transfer messages between network devices and the internet.

Embedded Systems in Health Care

Embedded systems are increasingly being deployed in the health care setting. Electronic medical devices are frequently designed with one or more internal microcontrollers that help coordinate their functioning within the timing and power constraints that are characteristic of embedded systems. While many types of embedded systems are meant to function with minimal user input, products in the health care system frequently require a user interface where a physician or technician can configure operational settings for the device. Examples of embedded systems in health care include CT scanners, ECG machines, magnetic resonance imaging (MRI) machines, and more.

Connected wearable devices are a growing area of application for embedded system software in healthcare. A patient wearing such a device can have their health and vital status monitored by physicians remotely, reducing the need for inpatient hospital stays and freeing up bed space for circumstances where it is critically needed. A connected, wearable heart rate monitor, for example, can automatically gather data from the patient and upload it to the cloud where it can be reviewed by a remotely located physician.

Embedded Systems in Industrial & Manufacturing Applications

Embedded systems vary significantly in their design and applications within the industrial and manufacturing sectors. In large industrial systems, embedded systems control complex tasks that can be configured or adjusted through a human-accessible user interface. These systems may control assembly lines, adjust plant conditions, or perform other large-scale functions in the industrial context.

In addition to systems that control industrial machinery, there are also embedded systems in products that monitor and provide feedback on industrial and manufacturing processes. These embedded systems contain sensors that gather data from the manufacturing process and upload them to a centralized database where it can be analyzed for patterns or anomalies. Thanks to the broad range of available sensors, industrial facilities can be monitored across several dimensions including pressure, temperature, vibrations, power output, and more. These systems are providing manufacturers with a greater degree of control over the industrial processes they manage each day. 

Summary

We can recognize many parallels between the traditional practice of software development and the way software is developed and deployed for embedded systems. Both types of software require underlying components, such as an application framework, runtime environment, and operating systems. Perhaps the most important distinction is that embedded software applications must be coded to account for the normal limitations associated with embedded systems, including on available processing capacity and power consumption.

Total Phase builds diagnostic tools that help embedded engineers efficiently debug their embedded systems software, resulting in more rapid development and reduced time-to-market. Tell us about your upcoming embedded systems project and we'll show you how Total Phase can help.

Request a Demo