Embedded Software Engineering Course, Winter 2004/2005

Department of Computer Sciences, University of Salzburg

Prof. Christoph Kirsch

Time, Location: Tue 8-10, Th 8-9, Techno-Z, T03. First lecture on Oct 7, 2004.

Brief Overview:

This course will provide an introduction to embedded software engineering: the first part covers real-time operating systems, real-time communication protocols, and scheduling theory; the second part focuses on real-time programming and code generation. The course begins with an introduction to real-time operating system concepts and real-time communication protocols such as the time-triggered protocol (TTP) and the event-triggered CAN protocol. Scheduling techniques such as rate-monotonic and earliest deadline first will be illustrated. The second half of the course emphasizes real-time programming and code generation for embedded systems. The high-level embedded programming languages Esterel, Lustre, and Giotto, will be presented. Code generation for Giotto will be discussed based on a virtual machine architecture called the Embedded Machine. Example programs in Esterel, Lustre, and Giotto will be implemented on Lego Mindstorm robots.



Team Project Presentation Video Code
Werner Hager, Manuel Maier, Harald Röck Butler James Slides Demo C
Rudolf Dittrich, Lutz Findeisen, Werner Gitschthaler Fog Detection System Slides Demo Java + nesC
Robert Löffelberger, Rainer Trummer Lego Sortbot Slides Demo C++
Rupert Gratz, Matthias Lackenbucher Parking Elvis Slides Demo Java + C
Richard Bauer, Christine Grammerstatter, Mohamed Elkhattaf RCX Robot Slides Demo C
Emilia Coste, Claudiu Farcas Distributed Timing Description Language Slides Demo Closed Source

Goal of the course:

Learn how to evaluate applications with real-time requirements, identify adequate programming paradigm and platform, implement applications with real-time requirements.


  • Each student is expected to read papers (see list below) before certain lectures (not more than one paper per week) and send a short summary (3-4 bullet items) of each paper by email before these lectures.
  • There will be a few home work assignments, e.g., programming exercises.
  • Teams of 2-3 students will develop and implement Lego Mindstorm projects, present and give demos of their projects at the end of the semester, and write project reports that could eventually result in publications.

Required Textbooks:

  • Hermann Kopetz, Real-Time Systems: Design Principles for Distributed Embedded Applications, 1997.
  • Giorgio C. Buttazzo, Hard Real-Time Computing Systems: Predictable Scheduling Algorithms & Applications, 1997.
Papers on Programming Abstractions:
  • T.A. Henzinger, C.M. Kirsch, B. Horowitz: Giotto: A Time-triggered Language for Embedded Programming. Proceedings of the IEEE, vol. 91 (1), 2003.
  • N. Halbwachs, P. Caspi, P. Raymond, D. Pilaud: The synchronous dataflow programming language Lustre. Proceedings of the IEEE, vol. 79 (9), 1991.
  • GĂ©rard Berry: The Foundations of Esterel. Proof, Language and Interaction: Essays in Honour of Robin Milner, MIT Press, 2000.
  • N. Wirth: Toward a discipline of real-time programming. Communications of the ACM, vol. 20, 1977.
Papers on Runtime Abstractions:
  • T.A. Henzinger, C.M. Kirsch: The Embedded Machine: Predictable, Portable Real-Time Code. PLDI 2002.
  • T.A. Henzinger, C.M. Kirsch, S. Matic: Schedule-Carrying Code. EMSOFT 2003.
  • N. Wirth: Tasks versus threads: An alternative multiprocessing paradigm. Software: Concepts and Tools, vol. 17, Springer, 1996.
Papers on Model-Based Design:
  • T.A. Henzinger, C.M. Kirsch, M.A.A. Sanvido, W. Pree: From Control Models to Real-Time Code using Giotto. IEEE Control Systems Magazine, February, 2003.
  • P. Caspi, A. Curic, A. Maignan, C. Sofronis, S. Tripakis, P. Niebert: From Simulink to SCADE/Lustre to TTA: A Layered Approach for Distributed Embedded Applications. LCTES 2003.
  • N. Scaife, C. Sofronis, P. Caspi, S. Tripakis, F. Maraninchi: Defining and translating a "safe" subset of Simulink/Stateflow into Lustre. EMSOFT 2004.
  • P. Caspi, A. Curic, A. Maignan, C. Sofronis, S. Tripakis: Translating Discrete-Time Simulink to Lustre. EMSOFT 2003.
Papers on Clock Synchronization:
  • Leslie Lamport: Time, clocks, and the ordering of events in a distributed system. Communications of the ACM, vol. 21 (7), 1978.
Papers on WCET Analysis:
  • H. Theiling, C. Ferdinand, R. Wilhelm: Fast and precise WCET prediction by separated cache and path analyzes. Real-Time Systems, vol. 18 (2-3), 2000.
Web sources: Esterel, Lustre, Giotto, LegOS.

Grading: 10% paper summaries, 20% home work, 70% project.

Mailing list: ese-winter-2004 @ cs . uni-salzburg . at

Prerequisites: C programming experience, basic knowledge of operating system concepts.

Restrictions: The number of available Lego Mindstorm robots is limited. Course language is English.

Administrative contact: Petra . Kirchweger @ cs . uni-salzburg . at