When most people think of “computer software,” they think of applications that are used to interact with a PC, laptop, or mobile device. These programs display icons or information on a screen and take input from a keyboard, pointing device, touch screen, or game controller. But interactive software represents only a fraction of the software that’s out there.
A great deal of the software in our lives runs quietly in the background on devices ranging from appliances to automobiles, factory machines, building systems, electrical switchgear, and more. This type of software often doesn’t take any user input or display anything for human consumption.
We call it embedded software.
Embedded Software Defined
The term “embedded software,” according to Techopedia, refers to software “written specifically for the particular hardware that it runs on.” This type of software is distinguished from application software, which is written for a specific operating system rather than certain hardware. Embedded software is also distinguished from firmware, although both types of software are designed to run on specific hardware.
Firmware is typically stored in read-only memory and is responsible for low-level device operations, such as device startup, shutdown, and input/output management. In contrast, embedded software is loaded into a device’s main memory for execution (similar to application software) and controls the overall operation of the device.
Examples of Embedded Software
Embedded software can be simple, occupying a few kilobytes of memory; or quite complex, with hundreds of thousands of lines of code. Some examples of embedded software include:
- Appliances – Contemporary appliances, like K-cup coffeemakers, microwaves, refrigerators, clothes washers, and dryers are controlled by embedded software. This software monitors operations to optimize performance and maximize energy-efficiency.
- Automobiles – Never mind self-driving cars; these days, conventional automobiles are almost entirely controlled by embedded software. Engine and transmission control, power and energy management, active suspension, and climate control are just a few of the numerous automotive components that are managed by complex software.
- Bluetooth® speakers – There isn’t much to a Bluetooth speaker, but it does require some software. You must establish a Bluetooth connection with a device and convert the incoming digital data to analog sound signals. Most Bluetooth speakers also have buttons to start, pause, and skip to the next or previous tracks. These button-presses must be converted to commands that are communicated over the Bluetooth connection to the device running the music player, for example.
- Internet-of-Things (IoT) devices – Billions of connected devices have been deployed for sensing environmental or industrial parameters, performing actions, and capturing audio/video, among other things. Billions more are on their way, and each one has embedded software to control its operations and communicate with other devices and/or computers.
- Printers – Modern printers not only convert incoming data into instructions explaining where to apply ink to paper, but also scan documents for storage or copying and communicate with other devices using a variety of protocols (USB, Ethernet, Wi-Fi, Bluetooth, and fax). These functions all require embedded software.
Considerations for Embedded Software Development
From a development standpoint, there are a few things that distinguish embedded software from user-interactive application software.
There’s no software user interface (although the device may have physical controls and a display of some kind). Thus, responsibility for the user experience (UX) design falls more to the hardware designer.
Many devices requiring embedded software have limited resources, such as power from a small battery or solar panel, a small amount of on-board memory, and a scaled-down microprocessor or microcontroller. That means in many cases software developers must code for maximum efficiency. Consumers aren’t going to be keen on buying a device that needs battery replacement or recharging every few hours because of inefficient, embedded software.
Security is a major concern for embedded software; in particular for network-connected devices. Hackers can hijack devices with insufficient security, causing all kinds of mischief. They can take over a smart-home device to eavesdrop, control an army of zombie devices to launch distributed denial-of-service attacks or crash an electric grid. The trouble they can cause range from annoying to deadly.
Another important aspect of embedded software is that the devices they run should be designed so the software can be easily updated. Without the ability to update the software, there’s no way to add or improve functionality, fix bugs, or patch security vulnerabilities.
Automaker Tesla has built this capability into its cars. Tesla’s automotive software is updated on a regular basis, not unlike a cellphone or PC operating system.
The Future of Embedded Software
Embedded software will continue to make its way into a wider range of devices. It will also increase in capability and sophistication, driven in part by continuing advances in computing power and storage density.
Artificial intelligence (AI) is an important direction embedded software is taking. For example, security video systems will soon be able to not only record a person approaching your property but also evaluate if the person represents a threat. This can lead to sounding an early warning or actuating additional security measures.
Embedded systems will also become increasingly integrated. Imagine a sophisticated clothes washer that calculates the required water temperature from the types of fabrics, load size, and dirt level. It then tells the home’s tankless water heater to boost the water temperature a few degrees for the next 15 minutes.
This integration could save water and energy because the water heater wouldn’t need to operate at maximum temperature all the time, and the washer wouldn’t have to mix hot and cold water to reach the right temperature. Look for other novel integration points as well, as devices become “smarter” and more sophisticated.
Embedded software is all around us. It will continue to become more ubiquitous, making our devices smarter, more capable, and more useful. Devices running embedded software will soon outnumber those running application software if they aren’t already. In any case, it’s safe to say the software isn’t just for computers anymore.