Revised Sept 10, 2015
CS 452: Real-Time Programming
Watch a video introduction to this course on YouTube.
General description
Students design and implement a real-time multi-tasking operating system using the tools and techniques of real-time programming for embedded systems. Implementation uses cross-compilation for an ARM-based system-on-chip. The operating system then supports an application program involving process control, data acquisition, and communication.
Logistics
Audience
- CS major students. Usually taken in fourth year. This course benefits students interested in applied computer science, operating systems, or control and calibration.
Normally available
- Winter and Spring*
*Enrollment may be limited due to lab room capacity.
Related courses
- Pre-requisites: CS 350 or SE 350; Computer Science students only
For official details, see the UW calendar.
Software/hardware used
- GCC cross-compiler for ARM
- Technologic, TS-7200 development boards
Typical reference(s)
- Course web pages
- Course notes
Required preparation
At the start of the course, students should be able to
- Write programs in C.*
Learning objectives
At the end of the course, students should be able to
- Design and implement moderate sized (~10K LOC) application programs
- Design, implement, and use debugging tools for multi-tasking programs, particularly critical races
- Program in assembly language directly on the hardware
- Participate in and maintain a pleasant social environment in the laboratory
- Work effectively as part of a team
- Create and perform an effective demo
Typical syllabus
Real-time systems (2 hours)
- Introduction to real-time systems
- Definition of the concept of a process
Concurrency and CPU multiplexing (3 hours)
- Review of concurrency and CPU multiplexing
- Implementation of a simple application using the concept of cyclic execution to provide concurrency
Real-time operating system (12 hours)
- Implementation of a simple but powerful real-time operating system kernel providing support for multiple processes, inter-process communication and synchronization via message passing, and interrupts
Process structuring techniques (9 hours)
- Design of those parts of the operating system that provide services to application programs
- Stereotypical task capabilities: servers, clients, workers
- Task structuring for application programs
- Pathologies: deadlock, performance problems
- Debugging
Application (6 hours)
Students design and implement an application, running on their operating system, that controls several trains doing independent tasks while sharing a single track. Students gain knowledge of the following:
- Calibration, building a computational model that maps accurately onto train kinematics
- Real-time fault tolerance, building algorithms that maintain time consistency in the presence of hardware faults
- Sensor attribution, assigning sesor reports to the correct real-world entity
- Mutual exclusion in an unreliable world
Other topics (6 hours)
- Other approaches to the design of real-time systems
- Language support for real-time concurrent systems: Golang
- Type-safe communication
- Multiprocessors, scheduling