cancel
Showing results for 
Search instead for 
Did you mean: 

Best practices for splitting tasks between M7 (GUI) and M4 (backend) on STM32H745I-DISCO Body:

Jerrythottathil
Associate II

Hello,
I’m working with the STM32H745I-DISCO board and I’d like to use the Cortex-M7 core for GUI (TouchGFX/LVGL) and the Cortex-M4 core for backend tasks like sensor data handling, communication protocols (CAN, UART, I2C), and preprocessing.

I’m looking for guidance and resources on:

  • Recommended project structure in STM32CubeIDE / CubeMX for dual-core applications.

  • How to set up inter-core communication (M7 ↔ M4) (OpenAMP, shared memory, or mailboxes).

  • Examples or reference projects where M7 is dedicated to GUI and M4 to background tasks.

  • Any best practices for memory allocation (framebuffer vs shared RAM) and FreeRTOS usage across cores.

If anyone has worked on a similar setup or can point me to example projects, tutorials, or documentation, that would be really helpful.

Thank you!

1 REPLY 1
Osman SOYKURT
ST Employee

Hello @Jerrythottathil ,

  • We also recommend to use the Cortex-M7 core for TouchGFX on a dual core MCU (m4 + m7)

  • You can find an example of core communication in the firmware pack of the STM32H7 family 
    (STM32Cube\Repository\STM32Cube_FW_H7_V1.12.1\Projects\STM32H745I-DISCO\Applications\OpenAMP for instance)

  • Yes you can find examples of it in the TouchGFX Designer. These 3 TBS are using dual cores :
    OsmanSOYKURT_0-1762348138595.png

     

  • We recommend to use the fastest memory with the CM7 core and modify your linker scripts to define memory regions explicitly for each core.
Osman SOYKURT
ST Software Developer | TouchGFX