cancel
Showing results for 
Search instead for 
Did you mean: 

Simple Multicore Core to Core Communication with STM32H7

JR1
Associate II

Hello Team,

 

how can a simple core to core communication on the STM32H7 be implemented? We want to exchange 2kByte of data in bidirectional way between CM7 and CM4.

Best regards,

Jochen

1 ACCEPTED SOLUTION

Accepted Solutions

See this thread: https://community.st.com/t5/stm32cubeide-mcus/easiest-way-to-share-data-between-cores-in-stm32h745/td-p/576140

Or just create a shared memory region common to the two cores on each Core's linker. But you need to ensure at least two things:

- Synchronization of read and write operation between the two cores using HSEM to ensure the consistency of the data.

- Either to manage the data coherency from CM7 side when Cache is enabled or declare that region as Strongly-Ordered or Device (non cacheable) using MPU.

 

To give better visibility on the answered topics, please click on "Accept as Solution" on the reply which solved your issue or answered your question.

View solution in original post

12 REPLIES 12
SofLit
ST Employee

Hello,

Please refer to the AN5617 STM32H745/755 and STM32H747/757 lines inter-processor communications 

See also this article.

You can use OpenAMP to exchange data between two cores. Please refer to these examples in STM32CUbeH7 on github:

https://github.com/STMicroelectronics/STM32CubeH7/tree/master/Projects/STM32H747I-EVAL/Applications/OpenAMP

Hope I answered your question.

 

 

To give better visibility on the answered topics, please click on "Accept as Solution" on the reply which solved your issue or answered your question.
JR1
Associate II

This example ist not working, we get compiler errors. Do you have a working example of the OpenAmp PingPong project?


@JR1 wrote:

This example ist not working, we get compiler errors. Do you have a working example of the OpenAmp PingPong project?


You need to give more details about that. What compiler you are using and what errors you are facing.

To give better visibility on the answered topics, please click on "Accept as Solution" on the reply which solved your issue or answered your question.
JR1
Associate II

It seems that the directories are not complete, including the HAL libraries.

Could you try to download the Open AMP PingPong example and build it with the STM32 Cube IDE?

Please tell how did you download the example via github or from this page

When you clone with git you, need to set the option recursive:

git clone --recursive

  

To give better visibility on the answered topics, please click on "Accept as Solution" on the reply which solved your issue or answered your question.
JR1
Associate II

I have found the project in the FW_H7 directory.

Still I am facing problems with the integration in STM32 Cube IDE, see  screenshots.

The projects CM4 and CM7 can be built, but there is no debug configuration available.

 

Sorry. Don't know about the CMake option.

What I asked you is to test the native project provided under C:\Users\<User name>\STM32Cube\Repository\STM32Cube_FW_H7_V1.11.2\Projects\STM32H745I-DISCO\Applications\OpenAMP\OpenAMP_PingPong 

and open the CubeIDE project from here:

SofLit_0-1725629560391.png

From my side I didn't have any errors during the compilations of CM4 & CM7 projects.

 

 

To give better visibility on the answered topics, please click on "Accept as Solution" on the reply which solved your issue or answered your question.
JR1
Associate II

The code is running now on both cores. Is there any better documentation available than the readme.txt?


Please refer to the AN5617 STM32H745/755 and STM32H747/757 lines inter-processor communications 

See also this article.


@JR1 ;

Already provided the documentation in my first answer.

To give better visibility on the answered topics, please click on "Accept as Solution" on the reply which solved your issue or answered your question.