Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mirzaim/augmented-freertos
Implemented Rate Monotonic (RM) and First-Come, First-Served (FCFS) scheduling algorithms with a simulation of real-time task execution using FreeRTOS
https://github.com/mirzaim/augmented-freertos
freertos rate-monotonic task-scheduling
Last synced: 14 days ago
JSON representation
Implemented Rate Monotonic (RM) and First-Come, First-Served (FCFS) scheduling algorithms with a simulation of real-time task execution using FreeRTOS
- Host: GitHub
- URL: https://github.com/mirzaim/augmented-freertos
- Owner: mirzaim
- License: mit
- Created: 2024-09-13T20:29:42.000Z (4 months ago)
- Default Branch: master
- Last Pushed: 2024-09-13T20:30:33.000Z (4 months ago)
- Last Synced: 2024-11-11T07:38:01.023Z (2 months ago)
- Topics: freertos, rate-monotonic, task-scheduling
- Language: C
- Homepage:
- Size: 209 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Real-Time Task Scheduler Simulation
This repository contains a simulation of real-time task scheduling using the FreeRTOS framework. The project implements various task scheduling algorithms, including:
- **Rate Monotonic (RM) Scheduling**
- **First-Come, First-Served (FCFS) Scheduling**
- **Task Management with Periodic and Sporadic Tasks**## Features
1. **Task Creation and Scheduling**:
- Tasks with different execution times, periods, and deadlines are created using FreeRTOS.
- Scheduling is handled by either the RM or FCFS scheduler, with tests included for both implementations.2. **Task Suspension and Resumption**:
- A mechanism to suspend and resume tasks dynamically, demonstrated in the handling of "Task 1."3. **Sporadic Task Management**:
- The system also supports sporadic tasks, which are created with randomized intervals and managed with high priority to simulate interrupts.4. **Real-Time Simulation**:
- The project simulates real-time task execution, providing detailed logging of task start, end, and missed deadlines.## Branches
The codebase is organized across different branches to facilitate switching between different implementations:
- **master**: Initial setup and project formatting.
- **task_sim**: Contains the core task simulation, including periodic tasks and sporadic task implementation.
- **fcfs_scheduler**: Implements the FCFS scheduling algorithm and its test cases.
- **rm_scheduler**: Implements the Rate Monotonic scheduling algorithm and its test cases.## Task Overview
- **Periodic Tasks**:
Four tasks with different priorities and periods (e.g., 250ms, 500ms, 750ms, and 1000ms) simulate real-world periodic task execution.- **Sporadic Task**:
A high-priority sporadic task is implemented to simulate interrupts or randomly occurring tasks in the system.- **Task Manager**:
The Task Manager oversees task suspension and resumption, managing task states dynamically.## Usage
1. **Cloning the repository**:
```bash
git clone https://github.com/username/repository-name.git
```2. **Switching between branches**:
Each branch contains a specific scheduling algorithm or task simulation feature. Switch between them as necessary:
```bash
git checkout fcfs_scheduler
git checkout rm_scheduler
```3. **Building the project**:
The main file is `main.c` in the `Project` directory. After making any changes, you can build the project using the following command:
```bash
make
```4. **Running the simulation**:
Once built, you can run your FreeRTOS simulation with:
```bash
./FreeRTOS-Sim
```