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
|Intercultural skills||Communication skills||Specialist 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, Overview of Real-Time Systems||Understand some important characteristics and definitions of real-time systems|
|Class 2||RTOS (1): Overview, Roles of RTOS Kernels, Real-Time Tasks||Understand the roles of RTOS kernels and real-time tasks|
|Class 3||RTOS (2): Synchronization Mechanisms in RTOS||Understand the concepts and algorithms of synchronization in RTOS|
|Class 4||RTOS (3): Priorities and Scheduling||Understand the concepts of priorities and scheduling algorithms of real-time tasks|
|Class 5||RTOS Programming (1): Overview, RTOS Programming in C/C++||Understand how to construct real-time programs in C/C++ for an RTOS|
|Class 6||RTOS Programming (2): Abstractions Mechanisms for Real-Time Processing||Understand the usages of abstraction mechanisms in an RTOS|
|Class 7||Analysis of Real-Time Systems (1): Schedulability Analysis||Understand the concepts of schedulability and methods of schedulability analysis|
|Class 8||Analysis of Real-Time Systems (2): Static Scheduling||Understand static scheduling algorithms for real-time tasks|
|Class 9||Analysis of Real-Time Systems (3): Dynamic Scheduling||Understand dynamic scheduling algorithms for real-time tasks|
|Class 10||Modeling Real-Time Systems (1): Overview||Understand modeling methods for real-time systems|
|Class 11||Modeling Real-Time Systems (2): Timed-Automata||Understand the concepts and definitions of Timed Automata|
|Class 12||Verifying Real-Time Systems (1): Model-Checking Timed-Automata||Understand methods and algorithms for model-checking timed-automata|
|Class 13||Verifying Real-Time Systems (2): Verification using UPPAAL||Understand formal verification methods using UPAAL model checker|
|Class 14||Advanced Topics (1): Formal Specification of an RTOS Kernel||Understand practical specification methods applicable to some parts of an RTOS|
|Class 15||Advanced Topics (2): Formal Verification of an RTOS Kernel||Understand practical verification methods applicable to some parts of an RTOS|
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.
Programming Project: 50%
Students must have successfully completed the related courses or have equivalent knowledge.
Students are desired to have familiarity with basic Unix terminal commands.