Multiple schedulers in a single core microcontroller?

akshay5292 wrote on Friday, March 11, 2016:

I’m new into the area of RTOS.
I would like to know about the possibility of having two schedulers run in a single core microcontroller.
The idea is to run an application with higher priority outside RTOS context. In this case I may need to use two schedulers of which one schedules my high priority application and the other forms the FreeRTOS scheduler.

Is the idea realistic? Please throw some light.
Thanks in advance.

richard_damon wrote on Friday, March 11, 2016:

Sounds very complicated. Why not just let FreeRTOS schedule everything, it allows you to assign priorities to tasks, so the high priority ‘applicaton’ (task?) gets priority for running.

Two have two schedulers for a single core would seem to require that one of the schedulers treats the other as one of the tasks it runs, and that subseviant scheduler would need to be somehow ‘tamed’ to keep it from interfearing with the master scheduler, likely needing something like virtualization, which doesn’t exist for most processors of the class that FreeRTOS runs on.

heinbali01 wrote on Sunday, March 13, 2016:

Hi Akshay,

Like Richard Damon, I think that FreeRTOS offers all features, possibilities that you will need.

If task-A has a higher priority than task-B, then task-B will only receive CPU-time as long as task-A is in a blocked (or sleeping) state.
If two tasks have an equal priority, they can get an equal amount of CPU time. Check out the options configUSE_TIME_SLICING and configUSE_PREEMPTION, which are on by default.

akshay5292 wrote on Sunday, March 13, 2016:

Thank you Richard Damon and Hein Tibosch.
Your inputs are very helpful for me. Let me analyse the best apt solution for my system and shall get back. Thank you once again.