cancel
Showing results for 
Search instead for 
Did you mean: 

Core comunication using STM32H7

schumilop
Associate

Hello,

What is the best way to communicate between cores? I am working on a project in which I need to read data using one core and process this data using a second core. I am working with a STM32H745. The idea is that the M4 core is going to be used to read data from sensors and the M7 core will process this data and then send it to a PC using USART. I thought that one way of doing this would be to write the data to the flash memory of the MCU and then read it using the other core, but I haven't been able to get this to work. If someone know a better way to do this it would be extremely helpful if you could guide me on how to do this.

Thank you!

1 ACCEPTED SOLUTION

Accepted Solutions
ChahinezC
Lead

Hello @schumilop​,

For dual core communication, I suggest to refer to the AN5557 (STM32H745/755 and STM32H747/757 lines dual-core architecture) and to the AN5617 (STM32H745/755 and STM32H747/757 lines inter-processor communications).

There are three possible solutions to be implemented with STM32H7 which are:

  • setup communication/ synchronization protocol using the device hardware resources.

  • the FreeRTOS IPC module.

  • the OpenAMP framework.

As example of sending the data between the two cores, you can use the FreeRTOS example present in the cube package under the ..\STM32Cube_FW_H7\Projects\STM32H745I-DISCO\Applications\FreeRTOS path.

This example shows how to use FreeRTOS's message buffers to pass data from one core to another.

When your question is answered, please close this topic by choosing Select as Best. This will help other users find that answer faster.

Chahinez

View solution in original post

3 REPLIES 3
TDK
Guru

Store data using a pointer to a specific area of SRAM. Both cores can access SRAM1-3 and AXI SRAM. Note that you'll need to manage cache appropriately, or disable it.

If you feel a post has answered your question, please click "Accept as Solution".
ChahinezC
Lead

Hello @schumilop​,

For dual core communication, I suggest to refer to the AN5557 (STM32H745/755 and STM32H747/757 lines dual-core architecture) and to the AN5617 (STM32H745/755 and STM32H747/757 lines inter-processor communications).

There are three possible solutions to be implemented with STM32H7 which are:

  • setup communication/ synchronization protocol using the device hardware resources.

  • the FreeRTOS IPC module.

  • the OpenAMP framework.

As example of sending the data between the two cores, you can use the FreeRTOS example present in the cube package under the ..\STM32Cube_FW_H7\Projects\STM32H745I-DISCO\Applications\FreeRTOS path.

This example shows how to use FreeRTOS's message buffers to pass data from one core to another.

When your question is answered, please close this topic by choosing Select as Best. This will help other users find that answer faster.

Chahinez

VTaya.1
Associate III

It worked this way, I have used shared SRAM in my project for similar requirement. Just make sure shared portion of SRAM should not be mapped into start up file RAM addresses. Edit .ID files for this operation.