This course presents an overview of time as it relates engineering complex software systems including embedded systems. In this course, basic concepts, terminology, and issues of embedded/real-time systems are examined.
The course aims to ensure that students not only acquire the knowledge and technique required for embedded/real-time system development, but also gain skills to formally model/verify simple real-time systems.
By the end of the course students should be able to:
(1) define what it means to be a real-time system,
(2) design and develop simple embedded/real-time programs on RTOS,
(3) discuss timing, scheduling and related properties, and
(4) formally model and verify simple real-time systems.
Embedded Systems, Real-Time Systems, Real-Time Operating Systems, RTOS, Scheduling, Schedulability Analysis, Verification, Model-Checking, TImed Automata
✔ Specialist skills | Intercultural skills | Communication skills | Critical thinking skills | Practical and/or problem-solving skills |
Classroom learning and programming exercises
Course schedule | Required learning | |
---|---|---|
Class 1 | Course Introduction and Overview, Real-Time Characteristics and Definitions | Real-Time Characteristics and Definitions |
Class 2 | Real-Time Operating Systems (1): Kernels, Tasks and Priorities | RTOS Kernels, Tasks, Priorities |
Class 3 | Real-Time Operating Systems (2): Synchronization, Communication and Memory Management | Mutex, Semaphore, Message Passing, Mailbox, Memory Pools |
Class 4 | Real-Time Operating Systems (3): Scheduling | Task Scheduling, Interrupts, Priority Inversion, Priority Inheritance |
Class 5 | Real-Time System Programming (1): RTOS Programming in C/C++ | Programming Abstractions in RTOS |
Class 6 | Real-Time System Programming (2): Abstractions for Real-Time Systems | Abstractions and Language Mechanisms for Real-Time Systems |
Class 7 | Analysis of Real-Time Systems (1): Schedulability Analysis | Schedulability Analysis, Periodic Tasks, Aperiodic Tasks |
Class 8 | Analysis of Real-Time Systems (2): Static Scheduling | Static Scheduling, Rate-Monotonic Scheduling |
Class 9 | Analysis of Real-Time Systems (3): Dynamic Scheduling | Dynamic Scheduling, Earliest Deadline First Scheduling |
Class 10 | Modeling Real-Time Systems (1): Modeling Timed Systems, Real-Time UML | Modeling Timed Systems, Real-Time UML |
Class 11 | Modeling Real-Time Systems (2): Timed Automata | Timed Automata |
Class 12 | Verifying Real-Time Systems (1): Model-Checking Timed Automata | Model-Checking Timed Automata |
Class 13 | Verifying Real-Time Systems (2): Using UPAAL | UPAAL |
Class 14 | Advanced Topics (1): Verifying RTOS Kernels | Verifying RTOS Kernels (case study) |
Class 15 | Advanced Topics (2): Functional Reactive Programming | Functional Reactive Programming for Embedded Systems |
None required (course materials will be provided via course website)
H. Kopetz, Real-Time Systems: Design Principles for Distributed Embedded Applications (2nd Ed.), Springer, 2011.
E.-R. Olderog and H. Dierks, Real-Time Systems: Formal Specification and Automatic Verification, Cambridge U. Press, 2008.
RTOS Programming Project: 50%
Assignment: 50%
Students must have succesfully completed the related courses or have equivalent knowledge.
Students are desired to have familiarity with basic Unix terminal commands.