What is Embedded Software?
‘What is embedded software?’ is a commonly asked question. The world and society around us is shaped and governed by systems based on microprocessors – pacemakers, mobile phones, home appliances, cars, rail control systems, satellites – the list is almost literally endless. Without them, there would be no energy, running water or food supply. Business or transportation would be impossible. Disease would spread and society would disintegrate rapidly.
The software executed in those systems is called embedded software. This is computer software that is built into hardware systems written to control machines or devices. Embedded software is typically designed for the particular hardware that it runs on and often performs a specific function, although a single piece of hardware may contain multiple embedded software programs.
Any piece of technology that has circuit boards and computer chips will likely have embedded software within it. Manufacturers incorporate embedded software in the electronics in cars, telephones, modems, appliances, toys, security systems, pacemakers, televisions and set-top boxes, and digital watches for example.
Embedded software allows many of the advanced functions that are common in modern devices. Whilst embedded software can be very simple, it can also be very sophisticated in applications such as process control systems, military weaponry and airplanes.
History of embedded software
Most innovative technology, is often funded, researched and developed for military applications and embedded systems were used in space exploration, missile guidance and avionics from the late 30s to the mid-60s. It wasn’t until the late 60s that embedded software evolved to the point where it was useful to people outside these specialist areas.
In the 1970s, the first integrated micro-controller chips such as the Intel 8008 made embedded software take off. This single chip acted like a tiny computer; it could read real-world data, process it and generate outputs, controlled by a flexible software program. With these chips, it became possible to write a single program, load it into the chip and then have that chip execute its program whenever it received the correct input. By the end of the 1980s, nearly every form of consumer electronics had some sort of micro-controller chip embedded inside it.
In the years that followed, the cost of producing integrated micro-controllers has dropped to pennies. As a result, they are in nearly every electronic device, and each of these chips has one or more pieces of embedded software. They are even in items that most people wouldn’t think had computers, such as toasters, electric fans or children’s toys.
The challenges in embedded software
Embedded software is by definition part of a larger hardware system, whether a car, a pacemaker or an industrial automation system. Not only do these systems operate in real time and have to produce the designed action within a specified time under all circumstances but they must operate with limited resources such as small memory space, limited data-processing capabilities or low power consumption. Embedded software must also conform to a wide range of changes in its environment. Processors, sensors, and hardware parts change over time, whereas the software remains almost the same. In addition, the software requires portability, autonomy, flexibility, and adaptability.
Reliability is paramount. Unexpected behavior from an embedded system could seriously damage its operating environment. Because end users demand long-term behaviors from embedded systems, embedded software must operate for decades without service.
Owing to embedded software’s close association with critical environments and life threatening risks safety is also a key requirement. The life cycle in developing embedded software is governed by standards that demand high quality, strong engineering and management processes. Combining this with the use of state of the art technologies makes strong demands on the technical expertise and professionalism required from embedded software engineers. As the size and complexity of embedded software grows, the standards applied to the software development process must continually improve despite fierce cost pressures.
Security is becoming more important as the ‘internet of things’ means that embedded systems become more widely used and more highly interconnected to each other. As everyday devices such as washing machines and refrigerators include connectivity as a standard feature, the Internet of Things is at risk of exposing new levels of insecurity and new ideas are needed to help thwart malware and hacking threats.
Embedded software increases the variability, configurability, extendibility, and changeability of everyday products and also allows for a greater variety of functionality. It is now a fundamental part of many things we take for granted about day-to-day life.
In the future, embedded software will be in everything—your automated home, your intelligent car, communication infrastructures, medical instruments and implants, and ubiquitous control systems. New energy-related technologies will increase the efficiency of electrical current transmission and provide immediate, effective ways to address energy and climate demands.
Embedded systems will no longer be defined by the computing hardware they use. Rather, they’ll be designed to do any function to achieve multiple and changing objectives, whether on a micro-controller, a microprocessor, a signal processor, a biological assembly, or any other programmable logic device.
The more quality of life we desire, the higher living standards we want to establish across the planet, and the more we demand security and safety, the more we need embedded software.