CMPE 117: Embedded Software
|
Instructor: Luca de Alfaro |
Resources
Robos is the operating system that we will use for the Lego® Mindstorm® robots. These pages contain both the code, and a wealth of documentation and information about robos (including application code examples).
Esterel is a synchronous language that we will use in programming Lego® Mindstorm® robots. This page contains all you need to install Esterel for lego.
Reading material for this class.
CMPE 117 Lab Setup (mostly useful to TAs)
/Homework Assignments (Homework 8 is due Thu, June 8th). /Homework Submissions Please upload here your solutions.
General Information
What is Embedded Software?
Embedded software is the software that is included in products, rather than running on desktop PCs or workstations. The applications of embedded software range from small, stand-alone systems such as those found in appliances, to the real-time, networked systems responsible for the control and performance of cars, aircraft, and production plants. Over 99% of the CPUs being produced are used in embedded systems, and embedded software determines an increasing share of the functionality, appeal, and complexity of a product, from cellphones, to automotive engine control systems.
What is This Course About?
- Program Lego® Mindstorm® robots in a variety of languages! Make them roam, explore, build ad-hoc communication links, and perform a variety of tasks. The special project this year consists in setting up an ad-hoc network between the robots, so that the robots can communicate and coordinate their tasks.
- Learn how to write concurrent, real-time code, and how to ensure it is correctly scheduled.
- Learn how different real-time operating systems support embedded programming.
- Experiment with high-level languages for embedded systems, developed to make real-time distributed control easy! These languages are based on a completely different set of ideas from the programming languages you are used to.
- Learn what are the main challenges in developing embedded software for complex systems such as cars, cellphones, and satellites, and learn techniques to overcome them.
Textbook
Giorgio C. Buttazzo, Hard Real-Time Computing Systems: Predictable Scheduling Algorithms & Applications. Kluwer Academic Publishers, 1997. I bought my copy from http://www.amazon.co.uk. You can probably survive without book, relying on the class notes. Other reading material will be made available during the class.
Final Exam
Thursday, June 15, 9-11am. Note the starting time at 9am.
Prerequisites
In order to present much of the material of this course, I need students to know the basics about threads/processes and interrupt handling.
Lab: CMPE 117L
The course has a lab, and everybody enrolled in CMPE 117 should also be enrolled in CMPE 117L. . Generally, I give one lecture a week in the lab. The first lectures will be dedicated to Lego Mindstorm programming; after that, we will talk about the details of the various class projects we will be doing. Students will have access to the lab during most times of the week to work on their projects. Students can work either alone, or in pairs, at the projects.
Class Projects
During the lab, students will work on the following projects:
Simple C Robotic Control Programs. The students will develop simple multi-threaded programs in C to control the operation of Lego robots. The goal is to learn to write simple multithreaded, real-time control programs.
Esterel Control Programs. We will write control programs for the Lego robots in Esterel, a synchronous programming language geared to control software and hardware developemt. This will enable students to experiment with an altogether different programming paradigm.
Ad-Hoc Networking Protocol. The project consists in developing an ad-hoc network using the infrared communication link of the Mindstorms. We will be able to use debugging tools and packet generators in order to help test the code. The ad-hoc network is a challenging application that will lead us to explore in a practical context many of the issues of embedded programming: scheduling, resource contention, locks, power-aware design, and real-time. It should be fun!
: Access restricted to members of EmbeddedClassGroup
