Skip to main content
robsen223
Associate II
May 10, 2019
Solved

What is the maximum transmission interprocessor bandwidth on STM32MP1?

  • May 10, 2019
  • 2 replies
  • 2832 views

I am interested in the maximum transmission bandwidth between the A7 core and M4 core on the STM32MP1.

I did some test using RPMsg framewirk and sent messages with length 496 Byte from the A7 core to the M4 core. Therefore I modified the OpenAMP_raw example. I measured the time which it takes to receive 2300 messages on the M4 side using HAL_getTick(). I measured an average time of 132 ms, which would result in a transmission bandwidth of just 8,64 MB/s, which seems pretty slow to me.

Has anyone made some experience with it or did some similar evaluation? Maybe me measurement method isnt optimal? I am thankful for evey opinion.

This topic has been closed for replies.
Best answer by Olivier GALLIEN

Hi @robsen223​ 

Could you please confirm data you provided ?

Computing given data we found 8,6MB/s ( 2300*496/0.132)

For your information, in an dedicated optimized environment we achieved 15.4MB/s (512 Bytes buffer size).

But this is really dependent of context on both cores and application.

Else generally speaking bandwidth can be enhanced :

  • by increasing RPMSG Buffer size, but till a reasonable limit (eg 2048) since RPMSG is designed for message (control ) and not data.
  • by using a shared memory ( rpmsg used for pointers exchange between cores)

BR,

Olivier

2 replies

Olivier GALLIEN
Olivier GALLIENBest answer
ST Technical Moderator
May 10, 2019

Hi @robsen223​ 

Could you please confirm data you provided ?

Computing given data we found 8,6MB/s ( 2300*496/0.132)

For your information, in an dedicated optimized environment we achieved 15.4MB/s (512 Bytes buffer size).

But this is really dependent of context on both cores and application.

Else generally speaking bandwidth can be enhanced :

  • by increasing RPMSG Buffer size, but till a reasonable limit (eg 2048) since RPMSG is designed for message (control ) and not data.
  • by using a shared memory ( rpmsg used for pointers exchange between cores)

BR,

Olivier

Olivier GALLIEN In order 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.
robsen223
robsen223Author
Associate II
May 14, 2019

Hi @Community member​ 

you are absolutely right with 8,6MB/s. I mixed up my notes.

Thank you for your comments. It gave my the right food of thought and helped me to finish my work. Especially I thought that RPMsg is the only option for data transmisson. I really like the idea of sending just pointer through RPMsg.

USama1
Associate II
May 14, 2019

Hi robsen223,

I am trying to write similar user application on linux for Inter core communication, could you clarify on how to write text via rpmsg on linux.

Thank you

Olivier GALLIEN
ST Technical Moderator
May 23, 2019

Hi @USama​ 

I suggest you to have a look to sample application "OpenAMP_TTY_Echo" installed on Starter Package and source available in STM32MP1 Cube Package.

https://wiki.st.com/stm32mpu/wiki/STM32CubeMP1_Package#Getting_started_with_STM32CubeMP1_Package

Hope it help,

Olivier

Olivier GALLIEN In order 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.