FreeRTOS with RMS

dotdotdog wrote on Thursday, December 11, 2008:

Does anybody know how to implement the RMS in FreeRTOS? Need to write separate program?  Many thanks for your help.


rtel wrote on Friday, December 12, 2008:

What is RMS?


dotdotdog wrote on Sunday, December 14, 2008:

Dear Richard,

Thx for your help, I just sent you the email for the training.

Because we worked in RTAI environment before.
Besides preemptive priority-based FIFO and round robin scheduling, RTAI also support the Rate Monotonic Scheduling (RMS), I just wonder if FreeRTOS support it? If not, how to make the program to simulate?


rtel wrote on Sunday, December 14, 2008:

Ah - OK.

I don’t think there is anything in FreeRTOS that prevents rate monotonic scheduling:

In its simplest form, for RMS you need:

+ A fixed priority preemptive scheduler - FreeRTOS does not use any dynamic priority algorithms so is a fixed priority preemptive system.  Tasks are permitted to change their own priority and the priority of other tasks, so for RMS you would have to avoid using the vTaskPrioritySet() API function.

+ Tasks with the shortest period to be assigned the highest priority - There is no automatic way to do this, but presuming the system designer knows the period of each task then they can also ensure the priorities are assigned accordingly.  FreeRTOS does not impose a limit on the number of priorities that are available.

+ Each task to be assigned a unique priority - again there is nothing to prevent you from doing this.

+ A known context switch time - the worst case is always calculable so this is also ok.

It would be best to then turn off the timeslicing (keeping the preemption) as timeslicing would just be an overhead with no benefit.

Do you agree?  Or am I missing something?


dotdotdog wrote on Tuesday, December 16, 2008:

oooh~~ thx. That means need to write our own routine to handle such scheduler.   U_U