FreeRTOS SMP Support


I’ve seen the work done for SMP support under github → FreeRTOS-Kernel → smp branch (unable to add the actual link)
What is the status of the code? is it still WIP? is there a POC for questions? I would like to contribute to this project, is there such an option?

We are interested in using FreeRTOS SMP with RISCV cores.


Hi Ronen - thanks for your interest. We are consolidating a few slightly different production SMP versions of FreeRTOS, specifically from Espressif and XMOS, and porting the result to new architectures. The intent is to then develop the scheduling algorithms a bit further. So while both starting code bases are in production, I think it would be accurate to say the consolidated version is still a work in progress in so far as differences in naming and testing may still be in a bit of flux.

Are you able to provide more information on your intended RISC-V target?

Hi Richard,

Thanks for the reply.
WDC has its own in-house versions of RISCV cores and I was assigned to have FreeRTOS SMP running on the multihart version.
Since there is no official FreeRTOS SMP release I need to implement it so it is generic enough. Espressif and XMOS don’t fully support what I need e.g. core affinity (not supported in XMOS) and number of cores > 2 (not supported by Espressif).
Is it possible to share the consolidated version?
It would be great if I could step in and help with the development.


The consolidated version is available as the branch in the primary repo. We welcome any contributions that you can provide. Richard was just providing fair warning that the SMP branch is still changing so any porting work you perform should be considered a work in progress.

On the topic of Affinity, the SMP port does have it in the form of two functions

void vTaskCoreExclusionSet( const TaskHandle_t xTask, UBaseType_t uxCoreExclude );
UBaseType_t vTaskCoreExclusionGet( const TaskHandle_t xTask );`

We are still making changes in this area so these functions will change.

Thanks for the clarification