ESL Logo
Purdue University Mark

Purdue University

Embedded Systems Laboratory


ECE495 / CS490: Software for Embedded Systems
Spring 2011

    


Instructor Information:
Prof. Vijay Raghunathan Prof. Jan Vitek
Office: EE 322B Office: LWSN 3154M
Phone: 49-47392 Phone: 49-46531
Email: vr@purdue.edu Email: jv@cs.purdue.edu

 

 

 

Class Location and Time:

HAAS G066, Tuesdays and Thursdays, 12:00 noon - 1:15pm

Lab Location and Time:

EE 350, Open 24 hours a day, 7 days a week

Targeted Audience:

Senior and junior undergraduate students in the School of ECE and the Department of CS

Pre-requisites:

(a) Interest: ECE and CS students interested in designing systems that interact with the physical world. (b) Knowledge: C programming (ECE264 or CS240), digital logic design and exposure to the inner workings of a microcontroller or a simple microprocessor (ECE362 or CS250), (c) Initiative: Willingness to work hard and address problems that require web research, use of simulation and debugging tools, hands-on experimentation, etc.

Course Description:

Embedded computing systems are found everywhere around us - in systems such as biomedical devices, smart cards and RFID tags, networked sensors, personal computing devices (including smartphones), home appliances and electronics, mobile robotics, automotive and avionic systems, etc. In fact, 98% of all CPUs manufactured today go into embedded systems. A key characteristic of these systems is that they involve a tight coupling to, and interaction with, the physical environment in which they operate. As a consequence, software design for embedded systems is very different from programming general purpose computing systems.

This course provides an introduction to software design for embedded computing systems. Major topics covered include an overview of embedded hardware, the importance of time in embedded systems (timing constraints, clocks, timers, etc.), embedded software organization (FSM-based design, polled loop systems, foreground-background systems, event-driven architectures, multi-tasking, etc.), real-time scheduling and real-time operating systems, wired/wireless networked embedded systems, debugging techniques for embedded software, and advanced topics such as memory-safe programming, minimizing code space, memory usage, and power consumption. Case-studies of a variety of real-world embedded systems from a variety of application domains will be discussed. The course features a series of integrated laboratory assignments and a design project using state-of-the-art embedded hardware platforms, embedded software design tools, and real-time operating systems that reinforce the concepts taught in the lectures.

Tentative Outline:
  • Introduction to embedded software and associated tool flow
  • Review of embedded hardware
  • Time and clocks in embedded systems
  • Software architectures for embedded systems
  • Real-time operating systems
  • Networked and distributed embedded systems
  • Debugging techniques for embedded software
  • Advanced topics in embedded software
  • Case studies: Medical devices, smart cards, home electronics, robotics, automobiles
Textbooks and Readers:

In our opinion, no single textbook exists that covers all the material taught in this course. Nevertheless, we will use the following textbook: "An Embedded Software Primer", David E. Simon, Addison-Wesley Professional, 1999, ISBN-13: 978-0201615692.

In addition, a comprehensive set of lecture slides will be distributed. Links to embedded system resources on the web will also be provided. These resources will include a reading list of articles in magazines, websites, technical conferences, and research journals devoted to embedded systems.

Tentative Grading Criteria:
  • Midterm Exam: One exam conducted in late March or early April.
  • Homeworks and Laboratory Assignments: In addition to several pen-and-paper homeworks, the course will involve hands-on programming assignments using off-the-shelf embedded development kits.
  • Design project: The course will feature a comprehensive embedded software design project, done in teams of two or three students, using a mobile robotic platform and an embedded development kit. In addition to periodic progress reports, each team will be required to submit a project report at the end of the semester, as well as give a presentation/demo to the instructors and the class.
  • Class participation and surveys: Attendance and active participation during class and providing feedback

Embedded Systems Laboratory (ESL), Room 216, Electrical Engineering Building
465 Northwestern Avenue, West Lafayette, IN 47907, Phone: (765) 494-0622