This repository contains the practical work completed during TP6, TP7, and TP8 of the Real-Time & Embedded Systems course. The project focuses on real-time scheduling, from simulation in Heptagon to execution on a bare-metal Raspberry Pi 3 (AArch64).
Each directory includes:
- The Heptagon source code
- Generated C code
- Bare-metal Raspberry Pi code (C + assembly + runtime integration)
- Scripts and build files
Goal: Discover Heptagon, simulate periodic tasks, states, deadlines, and generate C code.
- Periodic activation
- Task state automata (Waiting / Ready / Running)
- A mono-processor scheduler in Heptagon
- Simulation on PC through generated C code
Goal: Run real scheduling logic on 2 cores of the Raspberry Pi 3.
- A task scheduler running on CPU0
- A task executor running on CPU1
- Shared memory between cores
- Synchronisation using barriers and custom primitives
- Console output via bare-metal runtime
Goal: Implement real scheduling policies on Raspberry Pi 3.
Two schedulers are implemented:
- Static priority based on task period
- Lower period → higher priority
- Dynamic priority
- Task closest to deadline is chosen
Also:
- Task execution ("left" field)
- Periodic releases (
first_start,period) - Deadline check + deadline miss reporting
- Execution on multicore
- Hardware output via
console_puts
- Eve Lin
- Doha Bentaoussy
Second-year students in Embedded Systems Engineering EIDD – École d’Ingénieurs Denis Diderot
This project was developed as a team project in an academic context.
This repository is shared strictly for educational and demonstrative purposes related to the Real-Time Systems course at EIDD
You are allowed to:
- explore and study the Heptagon models, schedulers, and Raspberry Pi code,
- use the repository as a reference to better understand multicore scheduling and embedded development,
- reuse ideas or patterns for learning.
You are not allowed to:
- submit this code (in whole or in part) as your own work for any graded TP, project, or exam,
- reproduce this repository in another academic context without authorization,
- copy the scheduler implementation, structure, or logic for assignments that must be done individually or by your own team.
This project reflects the work done during our lab sessions and is published to help other students understand real-time scheduling concepts — not to replace their own work.
Academic integrity must be respected at all times.