Skip to Main Content
Summary form only given. This tutorial focuses on the development of systems software for embedded applications. We begin with a discussion of the software structure for embedded systems-from processor specific instructions, operating system, middleware and application layers-and then delve into issues of real-time embedded applications. As a way to motivate some of the issues underlying software design, we will illustrate how embedded applications are characterized by a number of cross cutting issues: control, sequencing, and signal processing and resource management. This will set the stage for identifying the required special real-time services/capabilities (in contrast with non real-time). The rest of the tutorial will focus on two specific topics: language issues and resource management issues. We overview three high-level (new) languages for designing embedded systems: Esterel which is good for control applications, Handel-C which is esp. good for data-flow (e.g., DSP) applications, Lava which allows also us to verify systems within the same framework. We give an introduction to Handel-C, a language based on ANSI-C, extended with concepts for timing, concurrency, flexible-width variables and resource allocation to let software engineers and hardware designers quickly implement complex algorithms efficiently in hardware. We will then discuss resource Management and scheduling paradigms based on static priorities, static schedules, dynamic scheduling, and best effort approaches. Current best practice in scheduling (e.g., Rate Monotonic vs. static schedules) and communication alternatives will also be covered and challenges posed by real-world issues such as blocking, unpredictability, interrupts, and caching will be introduced and extant solutions compared. To make the concepts concrete, examples of OSs for embedded systems will be presented, with a critical evaluation of Real-Time Linux as an embedded operating system. The possibility of developing real-time embedded systems without using an OS e.g., by "synthesizing" the OS capabilities into the s/w code will also be probed. Two-case studies will be used to illustrate the concepts: (1) controlling an injection moulding process and (2) flight simulator.