FreeRTOS Support for STM32MP131 MPU


According to the https:/ / we understood that FreeRTOS support is available for [STM32 Arm Cortex MPUs].

However, in this case, the FreeRTOS support is only available for Arm Cortex-M series processors (https:/ /

Is it confirmed that the STM32 Arm Cortex-A (STM32MP131) processor can run FreeRTOS?

The first port to the Cortex-A was in 2012, since which we also created 64-bit multicore Cortex-A5x ports - so while there may not be a preconfigured demo for the ST part, I’m sure FreeRTOS will run on it.

The typical STM32MP1 application uses Linux on the Cortex-A core. For versions of the STM32MP1 which contain a Cortex-M coprocessor, ST provides an SDK which demonstrates running linux on the Cortex-A core and FreeRTOS on the Cortex-M core. I’m not aware of any bare-metal Cortex-A examples provided by ST. If you contact your ST Field Applications Engineer, they may be able to provide further resources that are not yet publicly available.

As @rtel noted, FreeRTOS has been ported to ARMv7-A chips, but has not be tested the STM32MP131 in particular. The best reference for running FreeRTOS on ARMv7-A cores such as the Cortex-A7 is this page: RTOS for ARM Cortex-A.

You’ll need to investigate how to boot / setup the Cortex-A7 core especially the external memory and flash controllers. It is likely easiest to use ST’s port of TF-A and possibly u-boot as-is and launch your bare-metal FreeRTOS binary from u-boot or tf-a depending on your application’s requirements. Alternatively, you could uses these packages as a reference when building your own boot code.

ST’s stm32mpu wiki is the best reference covering the boot process of the STM32MP131. I’ve included some links below which you can review to get a better idea.

Source code for u-boot and TF-A are available on ST’s GitHub and their website:

1 Like