Real-Time and Embedded Systems Course Sequence
This project was funded by the National Science Foundation
Division of Undergraduate Education. The CCLI grant was
DUE-0311269. The two-year grant began in July 2003. We received a
one-year extension so the grant terminated in June 2006. This website
has information about the three courses that we developed for the
grant. Information is available on the courses syllabi and
assignments. For faculty and other instructors who would like access
to the full assignment information and sample exams please contact
J.Vallino _at_ se _dot_ rit _dot_ edu for information on how to get
access to that additional information. Please send a link to your
personal and/or department website so we can confirm your faculty
status and e-mail address.
Synopsis of Project
Small electronic products for the mass market are
increasing in complexity with the incorporation of programmable
components. The software in these devices has constraints that are
markedly different from software designed for a desktop application
running on a general-purpose computer. Most computing curricula deal
almost exclusively with developing software for that general-purpose
class. Real-time and embedded systems have increased in complexity to
the point that their development is no longer within the expertise of
a single discipline. Developers now must be cognizant of software
engineering design methodologies and underlying hardware
constraints. This project addressed this by developing a three-course
sequence of cross-disciplinary real-time and embedded systems
courses. We teach these courses in a studio-lab environment teaming
computer engineering and software engineering students. Students work
on course projects in pairs comprised of a software engineering
student and a computer engineering student. The courses will introduce
students to programming both microcontrollers and more sophisticated
targets, use of a commercial realtime operating system and development
environment, modeling and performance engineering of these systems,
and their interactions with physical systems.
Our published papers provide a good overview of what we
accomplished with this project.
- J. Vallino and R. Czernikowski, “Thinking Inside the Box: A Multi-Disciplinary Real-Time and Embedded Systems Course Sequence,” Proceedings of ASEE/IEEE Frontiers in Education Conference.
Indianapolis
, IN. October 2005.
- R. Czernikowski and J. Vallino, "Embedded Systems Courses at RIT," Workshop on Computer Architecture Education, Special Session on Embedded Systems. Madison, WI. June 2005.
- J. Vallino and R. Czernikowski, "Work In Progress - Multi-disciplinary Real-Time and Embedded Systems Laboratory and Course Sequence," Proceedings of the ASEE/IEEE Frontiers in Education Conference.
Savanah
,
GA.
October 2004.
Course Information
We provide general information about the three courses
below. All of these courses are upper-dvision technical elective
courses co-listed in both software engineering and computer
engineering. In the software engineering program the Embedded Systems
application domain is composed of these three courses.
Real-Time and Embedded Systems
Catalog Description:
This course provides a general introduction to real-time
and embedded systems. It will introduce a representative family of
microcontrollers and require students to program on these
devices. Fundamental material on real-time operating systems,
such as requirements specification, scheduling
algorithms and priority inversion avoidance will be presented.
The features of a commercial real-time operating system will be
discussed and used for course assignments.
Prerequisite(s): Operating Systems or Principles of
Concurrent Software Systems
Textbook(s) and/or Required Materials: Real-Time
Systems and Software, Alan Shaw, Wiley.
Course Objectives:
|
|
- List the scheduling algorithms commonly used in real-time systems.
- Describe the steps required to build, install and run a software system on an embedded processor.
|
|
|
- Discuss the event sequence for responding to an interrupt.
|
|
|
- Apply software engineering practices to the development of several small real-time systems.
- Demonstrate the use of a micro-controller as an event timer.
- Design and implement measurement tools to collect system performance data.
- Design and implement a concurrent system on a real-time operating system.
|
|
|
- Measure the performance of a real-time operating system.
|
|
|
- Design and implement a small-scale real-time application on a real-time operating system.
|
Topics Covered:
- Characteristics of real-time and embedded systems
- Requirements specification for real-time and embedded systems
- Operating system support for real-time systems
- Embedded systems programming of microcontrollers
- Commercial real-time operating systems
- Consideration for the design of safety critical systems
Typical Assignments:
- Microcontroller programming
Students program the 68HC12
microcontroller to act as an interval timer with microsecond resolution.
- Real-Time Operating System multi-tasking primitives:
Using VxWorks as an example of a
commercial real-time operating system, students learn how
to program using its concurrency and synchronization
primitives by writing a system simulation on the development station.
- Real-Time Operating System performance measurements:
Students learn how to schedule a periodic task under VxWorks
running on the target machines and measure inter-arrival time jitter
and interrupt response time using their microcontroller interval
timer.
- Final project:
The final assignment requires each student team to propose and
implement a project running on the target systems. We have seen
implementations of user-level drivers for the devices on the target
system, an ultrasound distance measurement, simple video games, and a
digital oscilloscope.
Class/Lab Schedule: 4 hours studio classroom
Modeling of Real-Time Systems
Catalog Description:
This course introduces the modeling of real-time software systems. It takes an engineering approach to the design of these systems by analyzing a model of the system before beginning implementation. UML will be the primary modeling methodology. Non-UML methodologies will also be discussed. Implementations of real-time systems will be developed manually from the models and using automated tools to generate the code.
Prerequisite(s): Operating Systems or Engineering of Software Subsystems
Textbook(s) and/or Required Materials: Doing Hard Time, Bruce Powel Douglass, Addison-Wesley
Course Objectives:
|
|
- Specify the characteristics of real-time and safety critical systems.
|
|
|
- Discuss the software process for the development of real-time systems and contrast it with development for a standard application.
- Identify architectural and design patterns for real-time and safety critical systems.
|
|
|
- Apply architectural and design patterns in the analysis and design of real-time systems.
|
|
|
- Model the dynamic behavior of a real-time system using statecharts.
- Describe the requirements for simple real-time systems using use cases.
- Model the structure of a real-time system using UML class diagrams.
|
|
|
- Implement a simple system on a real-time operating system.
|
Topics Covered:
- Basic concepts of real-time systems
- Basic concepts of safety-critical systems
- Object-oriented design process for real-time systems
- Requirements analysis of real-time systems
- Structural and behavioral analysis of real-time systems
- Task scheduling
- Real-time design patterns
- Dynamic modeling
- Real-time architectural frameworks
Typical Assignments:
- Requirements and Architectural Design:
For this assignment students develop a statement of requirements, an
architectural design and high-level class structural design based on
the user manual for a consumer electronic device.
- Design and Implementation:
This assignment starts with a clear statement of requirements and
requires the team to do a class-level design and implementation of
projects, such as a four-function calculator, and a simulation of a
controller for a chilled water air conditioning system.
- Code Generation:
Teams create a statechart-based definition of a specific application's
behavior and use the design tools autocoding capabilities to generate
C++ code for the application. For this project we have used a
four-function calculator and garage door opener controller.
- Final Project:
This project is a modeling exercise done as a
take-home final exam. Each student does a thorough
identification of actors, a use case analysis, class structural
design and system dynamic modeling using sequence
diagrams and statecharts. There is no implementation of
the systems which to date have been a power window
controller for a car and a reverse vending machine that
accepts containers for recycling at the local supermarket.
Class/Lab Schedule: 4 hours studio classroom
Performance Engineering of Real-Time and Embedded Systems
Catalog Description:
This course discusses issues of performance in real-time and embedded systems. Techniques for profiling the resource usage of a system and for measuring the effect of increasing system requirements will be covered. The control of physical systems will motivate the need for performance tuning of a real-time system. Students will write programs running under a real-time operating system that can maintain control of a physical system. The course will discuss and experiment with performance trade-offs that can be made using hardware-software co-design.
Prerequisite(s): Real-Time and Embedded Systems
Textbook(s) and/or Required Materials: None
Course Objectives:
|
|
- Identify different PID control modes
|
|
|
- Contrast effects of system parameters on control of a physical system.
|
|
|
- Demonstrate the effects of moving the hardware/software boundary in a design
- Design a test and measurement plan to collect system performance data.
- Compare performance of systems based on performance data.
- Profile the execution of an embedded system
|
|
|
- Describe hardware/software tradeoffs in the design of an embedded system.
- Analyze the profiling data to determine which areas of the program would benefit most from performance tuning.
|
|
|
- Implement a system to control for a simple physical system.
- Implement an FPGA solution of a software program
|
Topics Covered:
- Performance measurements for real-time and embedded systems
- Profiling of program execution in embedded systems
- Exploration of linear control systems
- Interpretation of linear control parameters
- Hardware system description languages
- Hardware/software co-design
Typical Assignments:
- Real-Time Systems:
Students perform experiments with the inverted pendulum system and a
ball and balance beam. These experiments highlight the effect of
parameter tuning and system load on control of the physical apparatus.
- Embedded Systems:
This part of the course uses our target
system as the computing element running the VxWorks
commercial real-time operating system.
Students perform a set of JPEG image compressions, first
using an all-software approach on the target system, and then
off-loading some of the computations to an attached FPGA
board. The students will then be able to make a hardware-software
co-design tradeoff by placing more device control
functionality in the FPGA.
Class/Lab Schedule: 4 hours studio classroom
There is also information here about a fourth course that a computer engineering faculty member not assoicated with the original grant created. The grant provided facilities that enabled him to create this fourth course. Similar to the original three courses it ran as a cross-listed software engineering and computer engineering course.
Real-Time Operating System Design
Catalog Description:
An exploration into the design of a real-time operating system (RTOS) kernel. This course covers all aspects of RTOS design including system initialization of peripheral devices, data structure design for process management, inter-process communication primitive design and implementation and scheduling algorithm fundamentals. The course is project-based, that is, a single project (the design and development of an RTOS kernel) will be used throughout the course. The C programming language will be used to implement the RTOS kernel.
Prerequisite(s): Operating Systems, Real-Time and Embedded Systems, C Programming experience
Textbook(s) and/or Required Materials: None
Topics Covered:
- Development Environment & x86 Boot Process
- PC Hardware Resources (i8259 & i8254)
- Real-Mode x86 Computer Organization
- Task Context & Task Control Block
-
Task
State
Management
- Context Switching
- Counting (“Dijkstra”) Semaphores
- Process Management
- RTOS Error Handling
- Software Events & Binary Semaphores
- Condition Variables & Message Passing
- Scheduling Algorithms
Class/Lab Schedule: 4 hours studio classroom
This material is based upon work supported by the National Science Foundation under Grant No. DUE-0311269. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.