Embedded Software Engineering Course, CCN 25754, Spring 2002
Lecture: Tu 930-11, Discussion: Th 930-11 Location: 521 Cory Hall, Hogan Room.

Overview talk.

Brief Overview: This 3 unit 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 is a revised version of a course that has been held in Spring 2001 for the first time. The course begins with an introduction to real-time operating system concepts and real-time communication protocols like the time-triggered protocol (TTP) and the event-triggered CAN protocol. Scheduling techniques like 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. Esterel and Lustre are so-called synchronous reactive languages. Giotto is a time-triggered programming language for embedded control systems that has recently been developed at UC Berkeley. Code generation for Giotto will be discussed based on a virtual machine architecture called the embedded machine that has also been developed at UC Berkeley. Example programs in Esterel, Lustre, and Giotto will be implemented on Lego Mindstorm robots. Each week, a one and a half hour lecture will be presented and a one and a half hour discussion will be held.

  • 1. Chapter: RTOS Concepts
  • 2. Chapter: RT Scheduling
  • Guest lecture by Gregor Goessler: Model-based Schedulability Analysis (ps)
  • 3. Chapter: RT Communication
  • Guest lecture by Marco Sanvido: Hardware-in-the-loop Simulation Framework
  • 4. Chapter: RT Programming: Giotto, Lustre, Esterel
  • Homework, Discussions, Projects:
    Team Homework Discussion Project Video Code
    Yang Zhao/ Arkadeb Ghosal Our RTOS CAL/ HyTech Giotto for Lego Movie Bot/
    Darren Liccardo/ Mark McKelvin Two Task E Machine Platform-Based Design Lego Navigation Movie Bot/ PC
    Shannon Zelinski/ Chris Cortopassi Code Review LegOS Search and Rescue Movie Bot
    Yanmei Li/ Alessandro Pinto/ Bruno Sinopoli LegOS E Machine Synchronization Issues Sensor Networks Movie Bot/ OS
    Doug Densmore/ Will Plishker Dual Task Code Review Embedded Software in Network Processors Boustrophedon Bandit Movie Bot
    Rahul Shah/ Xuanming Dong Code Review TTCAN Esterel Code Generation Movie Bot
    Sinem Coleri/ Anshuman Sharma/ Slobodan Matic First RTOS TinyOS/ Time Safety Checking Let There Be Light Movie Bot

    Class project platform: The Lego Mindstorm robot shown below will be used as the common platform for the experiments. The design of the robot is inspired by the FetchBot of Ben Williamson. Up to 12 robots are available. The robot is equipped with three motors to drive the two drive wheels through a differential, the steering wheel in the back, and the front arm to lift Lego pieces. The arm is equipped with a light sensor to detect Lego pieces. A touch sensor tells the robot whether the arm is lifted from the ground. In order to determine its location the robot has two rotation sensors to measure the position of the steering wheel and the number of rotations of the drive wheels.

    Course Robot

    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.


  • 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.
  • GĂ©rard Berry, The Foundations of Esterel, in Proof, Language and Interaction: Essays in Honour of Robin Milner, G. Plotkin, C. Stirling and M. Tofte, editors, MIT Press, 2000.
  • EMSOFT 2001 Proceedings.
  • Papers on special topics.
  • Web: Esterel, Lustre, Giotto, LegOS.

    Related courses: University of Kiel, Germany (mostly in German, some parts in English)

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

    Homework: Each student prepares a one and a half hour discussion on a special topic. A program running on Lego Mindstorms is due at the end of the course.

    Grading: Grades will be based on the discussion and the programs.

    Restrictions: 12 Lego Mindstorm robots available.

    Mailing list: eecs290o@ic.eecs.berkeley.edu

    Instructor: Christoph Kirsch