Revised Sept 10, 2015
CS 452: Real-Time Programming
Watch a video introduction to this course on YouTube.
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.
- CS major students. Usually taken in fourth year. This course benefits students interested in applied computer science, operating systems, or control and calibration.
*Enrollment may be limited due to lab room capacity.
- Pre-requisites: CS 350 or SE 350; Computer Science students only
For official details, see the UW calendar.
- GCC cross-compiler for ARM
- Technologic, TS-7200 development boards
At the start of the course, students should be able to
*Students develop programs to run on an Intel microcomputer system. Programs are written and cross-compiled on a host computer running UNIX and downloaded for execution on the microcomputer system. No prior knowledge of the Intel architecture is assumed and documentation is provided.
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
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
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
Last modified: Tuesday, 05-Nov-2019 13:51:43 EST