Chapter 13 Embedded Systems • Embedded Systems • Characteristics of Embedded Operating Systems 1 Embedded System • A combination of hardware and software designed to perform a dedicated function • Often, embedded systems are part of a larger system or product, – e.g., antilock braking system in a car • Embedded systems are tightly coupled to their environment imposes real-time constraints by the need to interact with the environment 2 Examples of Embedded Devices 3 Differences from typical computer • A variety of interfaces – enable the system to measure, manipulate, and interact with the external environment – human interface may be as simple as a flashing light or as complicated as real-time robotic vision • Use of a diagnostic port for diagnosing the system • Use of special purpose hardware to increase performance or safety • Fixed-function or application-specific software 4 Roadmap • Embedded Systems • Characteristics of Embedded Operating Systems 5 Characteristics of Embedded OS • Using a general-purpose OS for an embedded system may not be possible – constraint of memory space – constraint of power consumption – real-time requirements • Special-purpose OS designed for the embedded system environment is commonly used. 6 Characteristics of Embedded OS • Real-time operation – correctness of computation depends, in part, on the time at which result is delivered • Reactive operation – needs to consider worst-case conditions in execution in order to respond to external events that do not occur at predictable intervals 7 Characteristics of Embedded OS • Configurability – supports flexible configuration so that only the functionality needed for a specific application and hardware suite is provided – e.g., allows to select only the necessary OS modules to load • I/O device flexibility – handles devices by using special tasks instead of integrating their drives into the OS kernel 8 Characteristics of Embedded OS • Streamlined protection mechanisms – requires limited protection because tested software can be assumed to be reliable – e.g., I/O instructions need not be privileged instructions that trap to OS tasks can directly perform their own I/O – no use of an OS service call avoid overhead for saving and restoring the task context 9 Characteristics of Embedded OS • Direct use of interrupts – permits user process to use interrupts directly – no need to go through OS interrupt service routines – have efficient control over a variety of devices 10 Developing an Embedded OS • Two general approaches – Take an existing OS and adapt it for embedded purposes – Design a purpose-built OS solely for embedded use 11 Adapting an Existing OS • Examples include Windows, Linux – familiar interfaces facilitate portability – slower and less predictable than special purpose embedded OS – not optimized for real-time and embedded applications require considerable modification to achieve adequate performance • optimizes for the average case rather than the worst case for scheduling • assigns resources on demand • ignores semantic information about an application 12 Adapting an Existing OS • Need to add – real-time capability – streamlining operation – other specialized and necessary functionality for the given device 13 Purpose-Built Embedded OS • Most OS are designed from the ground up for embedded applications • Typical characteristics include: – Has thread switch (fast and lightweight) – Real time scheduling policy – Small size – Responds to external interrupts quickly (<10 s) – Minimizes intervals during which interrupts are disabled 14 Purpose-Built Embedded OS • Typical characteristics include: – Provides fixed or variable sized partitions for memory management and the ability to lock code and data in memory – Provides special sequential files that can accumulate data at a fast rate 15 Purpose-Built Embedded OS • To deal with timing constraints, the kernel: – provides bounded execution time for primitives – maintains a real-time clock – provides for special alarms and timeouts – supports real-time queuing disciplines, e.g., EDF (earliest deadline first) – provides primitives to delay processing and to suspend/resume execution 16