FreeRTOS and dual core

Does FreeRTOS support dual core?
I mean is it possible to switch tasks between two cores or assign tasks to one or another core?
Sorry I was not able to find anything within the FreeRTOS manual, but at the same time I was told that FreeRTOS does support dual core communication :confused:

FreeRTOS, in its official release, is a single core system. It can be used in an ‘asymmetric’ manner on a multicore system, where a separate copy runs on each core, and using user-level interactions to send messages between cores.

There are some ‘unofficial’ ports to handle multi-core systems in a symmetric manner, where there is one copy of FreeRTOS and tasks on the two cores can interact fairly freely (and I think tasks can move from core to core). These ports do need somewhat significant changes to how some things operate internally in FreeRTOS, as multicore system have a bunch of additional issues they need to deal with.

1 Like

You might find this interesting:

Yes, that article points out that Message Buffers can be used between two instances of FreeRTOS running in a Asymmetrical MultiProcessor configuration.

thank you, ill look into it

Hi there,
I am currently developing a project where I would like to keep CMSIS-RTOS portability and interface compatibility.
This is probably a “little” late question: But since only queues are available throught the CMSIS-RTOS(correct me if I am wrong) would it be possible to implement a Queue based IPC for AMP communicaton method instead?
What could be the problems ? Should I still send an interrupt to the receiving Core?
Many thanks!

I don’t think CMSIS-RTOS was designed for dual-core AMP configurations (and maybe not SMP as well), Note the Stream-Buffer for inter-core limitation is a Dual-AMP limitation only (as I remember), the SMP versions allow for cross core semaphores and queue (as the RTOS is naturally cross core in SMP).

1 Like

Thank you very much for your prompt reply @richard-damon