Porting FreeRTOS as an SMP kernel to STM32F4H7

Hello Everyone,
This is my first time here at the forum though I’ve been using FreeRTOS (ESP-IDF) for some time now. I have a project where i have to port FreeRTOS as a Symmetric Multiprocessing Kernel to STM32F4H7 (Has Dual Cores, 1x Cortex M7 and 1x Cortex M4). I used STMCube to check and found that FreeRTOS has been individually ported to both and is available for use but I require it to have one instantiation of FreeRTOS overlooking tasks on both cores (kind of like how it does in ESP32) the problem is the cores are different so I guess this creates a lot of trouble. I assume there’ll be certain portion of the code that’ll require asm code independently for both the cores I was wishing if anyone could just outline the major challenges (things that’ll be required) for me to have a clearer bigger picture since I’ve never ported FreeRTOS before.
Regards.

Actually you can use the same FreeRTOS port on the M7 and M4 cores, so that part is not a problem, however there are many challenges you need to overcome. So the first question to answer would be, do you really need SMP? We have AMP examples running already - if you genuinely need SMP I would be very interested in your use case as it will help us with our roadmap.

In the mean time, the following links may get you started:

[can’t find the link I’m looking for, but somewhere in the FreeRTOS Interactive site is a very good but very old paper (pdf) that describes creating an SMP version of FreeRTOS.]

A generalised and up to date SMP version of FreeRTOS created by XMOS:

A paper I have not read yet:

Hey,
Just for satisfaction of the fanboy in me, are you THE Richard Barry ? (Just Asking)
I am a senior year Electronics and Communications Engineering Student. I have been working on embedded systems since my freshmen year.
Arduino is coming up with a new board called portenta H7 (For Industrial IoT applications) and freeRTOS for portenta is one of the mentored projects under GSoC. Since portenta uses STM32H747XL and both the cores have AMP based freeRTOS available I thought of proposing an SMP version. But your question “do you really need SMP?” has brought me to doubts. The only experience of using FreeRTOS I have is with ESP-IDF hence i find myself familiar with SMP. Could you please shed some light here.
Regards.

1 Like