E&RT Systems Home Page Computer Science Department , Indiana University
NOTICE:
CSCI P545 is a new course offering for the Spring 2007 semester. Since its addition to the IU Course Catalog is still pending, it is currently scheduled under the Topics in Systems course number (B649) titled Embedded & Real-Time Systems (Johnson). Do not link to this URL, since it will be moved.

The course description below was updated on October 23, 2006. If you have questions about enrolling in this course, contact the instructor (sjohnson@cs.indiana.edu).

P545 - Embedded & Real-Time Systems
Spring 2007

INFO ABOUT TEXT TOPICS LAB          
What's New Look here regularly for postings.
10/23
This course page updated with full course information.
Course: CSCI P545: Embedded & Real-Time Systems
Instructor: Steven D. Johnson (sjohnson)

§ Catalog Description

P545 Embedded and Real-Time Systems (3 cr.) P: Any 400-level ``systems'' course (middle digit 3 or 4). Design and implementation of purpose-specific, locally distributed software systems. Models and methods for time-critical applications. Real-time operating systems. Testing, validation, and verification. Safety-critical design. Related topics, such as resiliency, synchronization, sensor fusion, etc. Lecture and laboratory.

§ Course Overview

The term embedded system refers to purpose-specific software executing in a dedicated setting. Some examples are: cellular telephony, network routing devices, consumer electronics, robots, digital avionics, automotive systems, and ``smart'' cards, to name a few. This is an advanced, project-oriented course in which classroom topics are explored through in-depth experiences in a substantial laboratory project. Embedded systems are ubiquitous in modern society. Their defining characteristics are distinctive in many aspects, and consquently, their mathematical models, design methods, implementation techniques, operating systems, performance analysis, and computer-aided design tools differ substantially from those for to other classes of systems. Furthermore, underlying technologies are evolving rapidly. The perspective offered in lecture is augmented by a substantial, cumulative laboratory project, which provides the necessary experience to pursue projects and research entailing embedded-system use or design.

§ Background Requirements

NOTE: Students with deficiencies but having compensatory special interests (e.g. instrumentation science, robotics, cognitive science, multimedia, etc.) are encouraged to consult with the instructor about approval to enroll.

The course assumes a basic fluency in ``systems'' concepts and terminology and senior-level programming competency. Additional background in diverse areas such as networks, distributed computing, hardware, etc., is desirable but not required.

Much of the programming involves interaction with the underlying operating system through system calls. Exposure comparable to that of the Operating Systems (P436) is adequate preparation. Specific OS facilities used include: sockets, signals, time, timers, and a few others.

Although embedded systems are typically made up of both software and hardware components. This course focuses on software aspects. It a sufficient number of hardware students are enrolled, there opportunities will be created to work in that realm, most likely through FPGA & microcontroler design, as taught in P442.

§ Textbook and References

The course textbook is High-Performance Embedded Computing: Architectures, Algorithms, and Applications. by Wayne Wolf (Morgan-Kauffman Publishers, 2006). Additional readings are posted on line through the course web page. Students may also wish to acquire an advanced book on system-level programming in Unix. Possible references include:

  1. W. Richard Stevens and Stephen A. Rago. Advance Programming in the UNIX® Environment (2nd ed.), Addison-Wesley, 2005. Architectures, Algorithms, and Applications. Morgan-Kauffman Publishers,
  2. More to come

§ Topic Outline

Tentative. Based on 40 aggregate lecture hours, based on 32 75-minute lectures
Architectures and Applications [1]. Digital control; "smart" electronics; sensor arrays; multimedia; networking components; instrumentation; heterogeneous systems; system-on-chip. Networks: ad hoc, common-carrier, hierarchical etc.
Terminology and Tradeoffs [2]. Reactive systems, event models; periodicity; throughput, latency, jitter, slack; polling and sampling; modes and configurability; resilience; hard-time and soft-time constraints. Worst-case and expected-case analysis.
Tools and technologies [6] Tools, design flows, libraries and packages, instrumentation, documentation.
Time [3]. Physical and logical; resolution, precision, accuracy; global and distributed synchronization. Clock synchronization algorithms, agreement protocols.
Resiliency [3] Faults, errors and failures; failure rates, transient failure; fault models; fault containment; fault tolerance and agreement; recovery.
Communication [4] Time division, carrier sense, collision-detect, etc. OSA model. Representative standards (e.g. IP, FlexRay, CAN, WiFi, ad hoc). Buffer network analysis.
Real-Time Operating Systems [6] Threads, tasks, processes periodicity. Scheduling parameters, static and dynamic heuristics; Thread integration, priorities and preemption. Models and instances of memory/file management.
Methods [2] Process-oriented design; synchronous and asynchronous abstractions; message based, image based, data-flow, etc. Design flow, simulation. Requirements, specification, implementation.
Testing.<.i> [3] Unit, component, integration testing; Testing frameworks, simulation. Instrumentation and measurement; Validation and verification; Formal analysis: models, tools. Safety aspects: classification, certification, documentation.
Sensors [4]. Statistical models, resolution, filters; feature synthesis and fusion.
Components [4] Device handling, point-to-point protocols (e.g. USB, Firewire); Platform computers, microcontrollers, FPGAs and software cores; Codesign, incorporating hardware, configurability and reconfigurability.

§ Languages and Tools.

The primary programming language used in this course is C operating in Unix. On some assignments, however, the choice of language/system is left to the student. However, lecture examples are presented in C, some assignments have to be written in CC++.

The core laboratory network operates under QNX, which is similar to Unix but has extensions for real-time applications. QNX has its own development and deployment environment.

The course project includes a substantial, documented design and implementation effort. The class will use the Doxygen documentation generator at lower levels for this purpose. Participants are urged to get basic familiarity with Doxygen prior to the start of the course. Instructions for doing this will be posted.

§ Laboratory

The course laboratory is a full-semester, whole-class project involving specification, design, implementation, and testing of a real embedded system. Participants work in teams of 3 to 5 people; and every effort is made to assure that each team, in aggregate, has the necessary skills to complete the project successfully.

The primary components in evaluating projects are (1) field testing for functionality and (2) documentation the work, which may include a presentation.

The laboratory platform is a golf car modified for computer control. The project goal is implementing an autonomous navigation system using the Global Positioning System (GPS) to follow a pre-determined course, with local guidance for obstacle avoidance. Initially, the class is given a software framework for controlling steering, acceleration and breaking, as well as a GPS sensor. Classroom lectures explain and explore the implementation of the framework as they develop solutions to the navigation problems in a cumulative series of lab assignments.

The expected sequence of the lab assignments will look something like:

  1. Lab bench exercises dealing with hard-real time control, clock synchronization
  2. Empirical characterization of GPS signal resolution
  3. Empirical characterization vehicle dynamics
  4. GPS navigation, path planning, tested in simulation
  5. GPS navigation field tests
  6. Functional re-distribution, simulation testing
  7. Functional re-distribution on control network, field testing
  8. Integrating external sensor input
  9. Sensor fusion, tactical path planning