Skip to content

A minimal run-to-completion scheduler with process management API, configurable context switching, and a demo application using 8 concurrent LED processes.

Notifications You must be signed in to change notification settings

Masihtabaei/coburc-embedded-os-with-cooperative-multitasking

Repository files navigation

coburc - A Minimal Embedded OS With Cooperative Multitasking

Note

This project was completed as part of the Embedded Operatiing Systems course during the Winter Term 2023/24 of our undergraduate studies, offered by Prof. Dr. Peter Raab at Coburg University. It was originally developed outside of GitHub and later partially migrated here, so some elements may be missing.

Important

This project is licensed under the MIT License.

Technologies Used

C Static Badge Static Badge Static Badge Static Badge Git GitHub

General Information

Here you will find a co-operative operating system (more precisely: co-operative scheduler) that I implemented as part of the course "Embedded Operating Systems" at the university. I called it cobuc. cobuc is a partial blend (Coburg [name of a small city located in Bavaria in Southern Germany] + Cooperative Multitasking ) Feel free to extend/adjust this project so that it meets your goals.

A simple API was developed for process management, which offers the following methods:

  1. create (to create new processes)
  2. destroy (for deleting processes)
  3. yield (to switch processes and contexts)

Process and context switch can be carried out using pure assembler code as well as a combination of C and assembler (controllable by a macro). Project is heavily commented and documented. You will find the documentation under documentation/html (this directory contains an automatically documentation generated by Doxygen). The operating system was implemented and tested for an Arm-based processor (Arm Cortex M4). A chaser light application (with 8 LEDs) was used for illustration and demonstration. Two processes each control 4 LEDs (one for the right and one for the left strip). There is also an initial process that takes care of all the configurations and initialisations. In addition, a fourth process takes care of the delay between the individual steps. By defining new processes, the two strips can be operated at different frequencies.

Videos

same_speed.1.mp4
2_times_faster.1.mp4
4_times_faster.1.mp4

About

A minimal run-to-completion scheduler with process management API, configurable context switching, and a demo application using 8 concurrent LED processes.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published