What is the maximum transmission interprocessor bandwidth on STM32MP1?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2019-05-10 5:19 AM
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.
Solved! Go to Solution.
- Labels:
-
STM32MP15 Lines
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2019-05-10 7:31 AM
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
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2019-05-10 7:31 AM
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
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2019-05-14 4:17 AM
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2019-05-14 8:28 AM
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2019-05-23 5:42 AM
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
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2019-12-12 4:46 AM
Hi @Community member​ !
I'm trying to understand how to use a shared memory.
Can you help me?
I think that the shared memory I should use is this:
sram: sram@10050000 {
compatible = "mmio-sram";
reg = <0x10050000 0x10000>;
#address-cells = <1>;
#size-cells = <1>;
ranges = <0 0x10050000 0x10000>;
dma_pool: dma_pool@0 {
reg = <0x0 0x10000>;
pool;
};
};
How can I access it? There is a specific driver (misc/sram)?
Thank you!
Lenon
