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.
Homework, Discussions, Projects:
|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.
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.
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: firstname.lastname@example.org
Instructor: Christoph Kirsch