8bitgeek / BabyRTOS

A minimal pre-emptive RTOS kernel, based on the ARM Cortex-M4 processor.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

BabyRTOS

Icon

A pre-emptive priority-based Real-Time Operating System (RTOS), based on the ARM Cortex-M4 processor.

Major features of the implementation includes,

  • Up to 63 task priorities.
  • Time-sharing (i.e, round-robin scheduling) between tasks of equal priority.
  • Support for multiple OS resources, including OS_mutex, OS_semaphore, and OS_queue.
  • Priority inheritance by mutex-locking tasks, by ceiling all waiting tasks.

Notes

  • Under /src is a sample application, based on the STM32F401CC micro-controller.
  • The implementation resides under,
    • /src/OS/OS.c and,
    • /src/OS/OS.h.
  • Other implementation dependencies are,
    • /src/MCAL/UTIL/Std_Types.h,
    • /src/UTIL/LinkedList and,
    • /src/UTIL/Queue.
  • The implementation uses the SysTick ISR for tracking OS ticks.
    • Its clock configuration is the responsibility of the Application.
    • The interrupt is automatically enabled by OS_init.
    • The timer is automatically started by OS_start.
  • Zero interrupt-priority is reserved, and should not be assigned to any other interrupt.
  • Interrupt pre-emption in the system is automatically disabled by OS_init.
  • All system resources (i.e, tasks, mutexes, semaphores, queues) must be zero-initialized (i.e, defined as global variables).
  • Use make -r -s build or make -r -s clean while in the /src directory.

Links

About

A minimal pre-emptive RTOS kernel, based on the ARM Cortex-M4 processor.


Languages

Language:C 75.1%Language:CSS 15.3%Language:TeX 8.0%Language:Python 0.9%Language:Makefile 0.7%Language:GDB 0.1%Language:Shell 0.1%