What are real-time embedded systems?
Real-time embedded systems combine features from both real-time systems and embedded systems, quickly delivering highly reliable responses to some external input.
The most cutting-edge real-time embedded systems are a key part of the future of semiconductors. As technology evolves beyond complementary metal-oxide semiconductors (CMOS), real-time embedded systems will become more powerful.
This is because as engineers develop digital logic technologies that go beyond CMOS scaling limits, chips will be able to provide greater computational power to digital devices. And more computational power means better real-time embedded systems.
What is a real-time system?
Real-time systems are computer systems that are designed to respond to an event or request from an external environment within a strictly defined time also known as a deadline. An important defining characteristic of these systems is that they are predictable and deterministic. This is essential for systems that need to respond in real time.
For some real-time applications, such as in medical devices sustaining human life, missing a deadline would be absolutely unacceptable. These systems are known as hard real-time systems. For other real-time applications, however, missing a deadline would be undesirable but not absolutely unacceptable. These are known as soft real-time systems.
What is an embedded system?
Embedded systems combine hardware and embedded software for a specific function or functions within a larger system. A very simple and convenient definition of an embedded system is any computer system contained within a product that is not described as a computer.
While all embedded systems, or embedded applications, are computing systems, they have widely varying user interfaces. Some embedded systems are designed to perform a single task and do not require a user interface. Other embedded systems have complex graphical user interfaces.
Why are real-time embedded systems important?
Real-time embedded systems are important because they provide the means to achieve predictable responses to deadlines. This means that they can exert tight control over certain outcomes. They can produce results in real time, without a significant delay.
There are numerous examples of real-time systems in some of the most important places in contemporary commercial, governmental, military, medical, educational, and cultural infrastructures.
Examples include but aren’t limited to the following:
- Traffic control systems for highways, airspace, railway tracks, and shipping lanes
- Process control systems for power plants and chemical plants
- Medical systems for radiation therapy, patient monitoring, and defibrillation
- Military weapon systems
These examples demonstrate the concept of a system capable of responding predictably in real time. All of these systems have to do their jobs without significant time lags.
How a real-time embedded system works
A real-time embedded system works by combining real-time environmental interaction with embedded software processing, creating predictable, deterministic real-time computing systems that are capable of executing “mission critical” applications. Real-time embedded systems use input from the environment and generate real-time responses that affect outcomes.
Real-time embedded systems with embedded software differ from embedded Linux applications by being much more limited: embedded systems comprise static link libraries providing only task scheduling, interprocess communication, synchronization timing and interrupt services, and little else besides. This is in many ways an advantage compared to Linux, since their limited capabilities are geared toward fulfilling their functions.
How does an embedded system work?
An embedded system incorporates a rugged motherboard into an industrial enclosure, with an associated input and output (I/O) and software to fulfill the process that is the function of the system. The hardware component of an embedded system is broadly similar to that of other electronic systems. The hardware is based around a microprocessor or microcontroller, along with the elements of memory and I/O.
This hardware component is the central component of the system, responsible for carrying out computational tasks. To that end, embedded systems contain software known as firmware written for one particular application. The creators of these systems typically write the firmware in high-level formats and compile them to provide code that can be stored within a nonvolatile memory within the hardware.
How do reactive embedded systems work?
Many embedded systems are reactive embedded systems, meaning they must react continuously to any input from their environment by generating an output. Such systems are built around one crucial concern—safety. They embody real-time computing.
The basic structure of a reactive embedded system starts with a sensor, which continuously measures a physical quantity or input and converts it to an electrical signal. The system stores the signal in its memory and reads it with an external observer or analog-to-digital converter.
The processors acquire the digital signal, process it, and measure the output. They can then store the results to memory. A digital-to-analog converter converts the digital data back to analog data, and an actuator can compare the output with the actual expected output and store the approved output.
What are the hardware foundations of a real-time embedded system?
The hardware foundations of a real-time embedded system generally consist of either a microcontroller or a microprocessor. A microcontroller is basically a central processing unit (CPU), or a processor with integrated memory or peripheral devices.
A microprocessor, on the other hand, contains a CPU but makes use of external chips for memory and peripheral interfaces.
Pros and cons of using real-time embedded systems
The upsides and downsides to using real-time embedded systems largely stem from the same set of features. These systems are designed to perform a limited number of tasks quickly, reliably, and without error. As a result, they are prone to trade-offs such as limited function and being difficult to edit and program.
Embedded systems are small, relatively cheap, and specific to one particular task. Because of these features, they are highly reliable, load quickly, use system resources in a highly optimized and efficient manner, and consume low power.
This means that embedded systems are ideal for heterogeneous integration with other components. Thanks to sound embedded systems programming, an embedded system can reliably perform its single allotted task in a manner that enhances the functionality of the rest of the system.
Embedded systems are difficult to upgrade, and if one of them has a problem, it is necessary to reset the settings. Their hardware is very limited, troubleshooting them is difficult, and they do not make it easy to transfer data to other systems.
What are the advantages of using RTOS software architecture for an embedded system?
The advantages of using real-time operating system (RTOS) software architecture for the development of an embedded system include speed, efficiency, and reliability.
RTOS software architecture allows for priority-based scheduling, or real-time scheduling. Using an algorithm, a real-time operating system can act as a scheduler, deciding which tasks to execute at any point in time and which ones to suspend. For that matter, tasks can also suspend themselves.
These systems are fast and deterministic, making them ideal for integration with embedded systems in many ways. Their claims on memory usage are predictable, since each task is allocated defined stack space.
Code reuse is another benefit of RTOS architecture. Similar applications on similar platforms can use some of the same code, allowing developers to create and use a library of standard tasks. Real-time operating systems are also extremely reliable and have the capacity to deliver desired outcomes without error.
What are the disadvantages of using RTOS software architecture for an embedded system?
The disadvantages of using RTOS software architecture for an embedded system have a great deal to do with the same features that make these systems so capable.
For one thing, these systems possess limited task ability. They are designed to provide a fast, resource-efficient, highly reliable means of completing certain tasks. But part of the necessary trade-off is that they can run only a few tasks at the same time. This is necessary to avoid errors.
Another problem is editability. Real-time operating systems rely on complex algorithms, and the very complexity of these algorithms makes it difficult to edit them. A real-time operating system software architecture is not easy to program or edit.
These systems also need specific device drivers and interrupt signals to respond quickly to interrupts. They are not good at switching tasks.
Overall, these systems deliver speed and reliability in the handling of a few tasks at the expense of versatility and editability.
How to implement real-time embedded systems
From a software engineering perspective, how to implement real-time embedded systems is largely a question of choosing a design and installing the real-time operating system onto an embedded device.
What projects can take advantage of a real-time embedded system?
Any application that needs to respond to an external stimulus predictably, quickly, and without error can take advantage of a real-time embedded system. Examples include the following:
- Automobile airbag systems
- Traffic control systems
- Pacemaker systems
- Military weapons, tracking, and command-control systems
What is the best way to implement a real-time embedded system?
The best way to implement a real-time embedded system is to start with clear requirements so that you can be sure the design meets those requirements. Once you have a design, you can proceed to programming.
Object-oriented programming with message-passing ability offers some of the best ways to implement a real-time embedded system. The IEEE Xplore digital library includes numerous resources that offer guidance on implementing a wide range of real-time operating systems in the context of embedded devices.
How can you ensure a smooth implementation of a real-time embedded system?
Smoothly implementing a real-time embedded system starts with addressing the necessary elements of these systems. Their creators have to program them to meet given timing constraints; this is part of the software engineering design and the definition of a real-time system. These constraints include event response—that is, what the system is supposed to do when it encounters the stimulus it is designed to respond to—and task scheduling.
Task scheduling covers the ability of real-time embedded systems to respond to different inputs with different tasks, a task being a response in the form of a set of instructions. Common design patterns include round-robin scheduling, in which each system component takes a turn using shared resources, and queueing design, in which items take their turns.
Interested in becoming an IEEE member? Joining this community of over 420,000 technology and engineering professionals will give you access to the resources and opportunities you need to keep on top of changes in technology, as well as help you get involved in standards development, network with other professionals in your local area or within a specific technical interest, mentor the next generation of engineers and technologists, and so much more.