Minimalist RTOS implementation for ARM Cortex-M written in C23 and assembly.
Source code:
rtos.csource codertos.hheader filecontext_switch.sassembly implementation of context switchingsyscalls.csystem call implementationsmain.cexample application for stm32g474
API:
define_task()define a new taskcreate_task()create and register a taskrtos_start()go!rtos_delay()delay task execution by milliseconds
Implementation details:
- multi-priority round-robin scheduler
- task premption on 1ms quantum via SysTick interrupt
- context switching via PendSV interrupt (lowest priority)
- O(1) task creation, selection, and deletion via circular double linked list