Asymmetric multiprocessing support (AMP)


I’ve came across two widely different standpoints in the Internet. One user stated that AMP is trivial, supported out of the box, etc. The other one was suggesting merging *.hex files…

My question is simple. Does FreeRTOS support running two independent instances of itself on two cores? My guess is it does not. At least not on platforms with common RAM. The state is held in static variables.

FreeRTOS does support AMP, and in fact that was the first version of multi-processor support available. You build your application as two seperate application files, each built with their own copy of FreeRTOS and all your libraries, targeting their use of different address spaces within the common address range (or using separate address ranges). You need to implement some inter-processor interrupts for sending information. The StreamBuffer even have code to allow one processor to be sending and another processor to be receiving from that buffer.

Just to add to @richard-damon’s post, this demos shows AMP core to core communication implemented using message buffers - FreeRTOS - multicore (dual core) inter core communication example on STM32H745I Discovery board from ST