CyanRTOS is an realtime operating system intended for control and compute intensive applications. It was originally developed as one of my spare time projects in 2013, on a X86 machine. It was then ported to Blackfin DSPs in 2015.
CyanRTOS has a preemptive, priority based scheduler. It supports unlimited tasks, 255 priorities. When two or more tasks share the same priority, they are RR scheduled. Rescheduling will happen if one of the following circumstances are met:
- A task is inserted into the ready queue, and its priority is higher than the currently running task.
- A task which is currently running, being removed from the ready queue.
- (RR) If there are two or more tasks share the same highest priority, and the currently running task's round ends.
It supports as many as 255 nesting interrupts. Recheduling will not happen until the nesting level return to zero.
These conditions are true for both user space program and interrupt routines. This means that after an interrupt occured, the scheduler also checks if rescheduling is necessary.
The project is being actively updated. I'm currently working on porting it to other Blackfin/Blackfin+ DSPs. ADSP-BF707 is the next DSP on my list.
The code is released under BSD license, available on Bitbucket