korken89 / crect

A C++, compile-time, reactive RTOS for the Stack Resource Policy based Real-Time For the Masses kernel
Boost Software License 1.0
190 stars 21 forks source link

Compatibility / Interop with other RTOS #16

Open paulreimer opened 4 years ago

paulreimer commented 4 years ago

I am very excited to try SRP-style scheduling for more of my projects.

The majority of applications I work on involve some form of mainstream wireless communication (bluetooth, wifi, etc). And, normally the IC mfr. provides some software integrating with a popular RTOS. For example, nrf52 Bluetooth using the Nordic Softdevice, or NimBLE stack running on Apache MyNewt/Zephyr RTOS. Preemptive scheduling or cooperative scheduling is typically used, and in my experience applications integrate + use the same RTOS.

My question is: can crect be used alongside these RTOSes? Does one scheduler fit within another (e.g. crect acts as a blackbox/task within the preemptive RTOS? (or, vice versa, perhaps the RTOS is treated as a blackbox/resource within crect?)

Any tips/suggestions/ideas are welcome (especially if it is a straightforward “no, you cannot do this”)

korken89 commented 4 years ago

Hi sorry for the late reply here.

What you are looking for is indeed possible, though not supported. I moved to Rust, and continued this project there and we did develop what you are looking for.

If you let the SRP based system handle interrupts, one can run a normal task/thread scheduler in the idle task. Then you would keep all guarantees that is connected to SRP while keeping the full power of an operating system (with threads/tasks).

If you want to give it a try I'd recommend to start with a simple round robin scheduler in idle and go from there. :) If you want to check out the Rust project, you can go here: www.rtfm.rs

Good luck!