Timing-Aware Programming for Embedded Systems
Since embedded systems usually have to react to changes in the embedding environment, they need to guarantee a correct timing behavior. For example, the Electronic Stability Program (ESP) in a car constantly monitors speed, grip, etc. of wheels and reacts accordingly to avoid skidding and sliding. Clearly, to achieve the desired effect, ESP needs to react to changes within given time upper bounds or deadlines. Traditionally, when developing embedded systems, programming languages such C, C++ or Java are used. However, these were initially not conceived for this purpose and do not provide any language-level support for specifying timing within programs. As a consequence, the testing and verification process becomes very cumbersome. In this course, we will study programming languages which specifically originated for developing embedded software. Such programming languages allow accounting for timing and ease the process of guaranteeing a correct behavior of programs. In particular, we will deal with so-called synchronous languages such as Esterel and Lustre. The course makes special emphasis on the differences between synchronous and traditional languages, on the advantages and disadvantages of different programming paradigms,etc. In addition, participants will have the opportunity of gaining experience with the different languages and getting to know commercially available tools in a number of lab sessions.
The Esterel programming environment