Lectures, discussions and exercises. On the last day there is an intensive interactive workshop to practice presented techniques. Course material: book, course notes, handouts, articles.
The development of real-time software requires special methods and techniques. In this intensive 5-day course participants will learn design aspects of real-time (embedded) programs, in particular timeliness and concurrency.
Objective
After successful completion of the course, the participant will be able to reason about timeliness and concurrency aspects of real-time (embedded) software. More specifically, they will:
- Be able to apply methods for designing concurrent programs in a systematic way;
- Be able to deal with time considerations and real-time scheduling;
- Be able to apply techniques for modelling real-time software;
- Be acquainted with R-T operating systems that support concurrency and scheduling.
Target audience
This course is intended for hardware and software engineers, system analysts and designers who develop real-time software in the area of embedded systems, CAM, laboratories etc.
Prerequisites:
- Experience in software development;
- Knowledge of the fundamentals of computing science;
- Knowledge of general operating system policies and mechanisms.
Program
Day 1 & 2:
- Fundamentals and concepts of real-time embedded software systems.
- Concurrency primitives.
- Multitasking issues.
- Programming models.
- Communication and synchronization.
- RT Operating systems.
Day 3:
- Introduction to scheduling.
- Scheduling analysis with periodic, sporadic and aperiodic events.
- Rate Monotonic Scheduling with and without resource contention.
- Response-time calculations.
- Deadline Monotonic vs Rate Monotonic scheduling.
- Fixed priority vs dynamic priority.
Day 4:
- Why is real-time different from non-real-time?
- General aspects, abstraction levels, methodological aspects of RT design (object orientation and real-time, RT object oriented languages, modeling RT systems in UML2.
Day 5:
- Requirements, design of structure (applying general and task structuring heuristics), specification of behaviour, analyzing timing contraints, analyzing schedulability (assigning priorities, identifying resources, priority inheritance and priority ceiling), programming model dependencies.