|
|
|
|
| First day |
| Introduction to real time |
 |
Base real time concepts |
 |
The real time constraints |
 |
Multi-task and real-time |
 |
Multi-core and Hyperthreading |
| Exercice : |
Install the development environment on the host system (if needed) |
| Exercice : |
Install the execution environment on the target system |
| Exercice : |
Create a simple context switch routine |
| Thread safe data structures |
 |
Need for specific data structures |
 |
Thread safe data structures |
|
 |
Linked lists (simple or double links) |
|
 |
Circular lists |
|
 |
FIFOs |
|
 |
Stacks |
|
 |
Data structure integrity proofs |
|
 |
Assertions |
|
 |
Pre and post-conditions |
| Exercice : |
Build a general purpose thread safe doubly linked list |
| Second day |
| Memory management |
 |
Memory management algorithms |
|
 |
Buddy system |
| Exercice : |
Write a simple, thread safe, buddy system memory manager |
|
 |
Best fit |
|
 |
First fit |
|
 |
Pool management |
| Exercice : |
Write a generic, multi-level, memory manager |
|
 |
Memory management errors |
|
 |
memory leaks |
|
 |
using unallocated/deallocated memory |
| Exercice : |
Enhance the memory manager for memory error detection |
|
 |
stack monitoring |
| Exercice : |
Enhance the context switching infrastructure to monitor stack use |
| Elements of a real time system |
 |
Tasks and task descriptors |
|
 |
Content of the task descriptor |
|
 |
Lists of task descriptors |
|
 |
Context switch |
 |
Task scheduling and preemption |
|
 |
Tick based or tickless scheduling |
|
 |
Scheduling systems and schedulability proofs |
|
 |
Fixed priority scheduling |
|
 |
RMA and EDF scheduling |
|
 |
Adaptative scheduling |
| Exercice : |
Write a simple, fixed priority, scheduler |
| Third day |
| Interrupt management in real time systems |
 |
Need for interrupts in a real time system |
|
 |
Time interrupts |
|
 |
Device interrupts |
|
 |
Level or Edge interrupts |
 |
Hardware and software acknowledge |
 |
Interrupt vectoring |
| Exercice : |
Write a basic interrupt manager |
|
 |
Interrupts and scheduling |
| Exercice : |
Extend the scheduler to also support real-time round-robin scheduling |
|
 |
Assigning interrupts to processors |
 |
Multi-processor scheduling |
| Exercice : |
Study of a multi-processor scheduler |
| Synchronisation primitives |
 |
Waiting and waking up tasks |
 |
Semaphores |
| Exercice : |
Implement Semaphores by direct interaction with the scheduler |