cancel
Showing results for 
Search instead for 
Did you mean: 

Transfer Data from A7 to M4 faster than from M4 to A7

YRink.1
Associate II

Hi,

i have done some Benchmarktest via Rpmsg and iam getting following results:

Maximal datarate sending data from M4 to A7 4.359 MB/s.

Maximal datarate sending data from A7 to M4 9.16 MB/s.

Now iam not sure why reading from A7 side is so much slower than writing, because you always get an interrupt back doesnt matter if you are sending or reading data.

I have following thougths about that and also a question:

  • If Linux receives an Interrupt from IPCC, is Linux handling the Interrupt directly or will the functions executed later from a worker-thread? This would be nice to know.
  • The reading function seems to be more complicated and needs more ecextuion time than just writing?!

Maybe someone already have some thoughs or answers to that.

1 REPLY 1
ArnaudP
Senior

Hello,

The Linux operating system is not a real-time OS, the latency of interrupt handling is not predictable and depends on other processes running on the Cortex-A7.

So it quite difficult to give you a clear answer as it depends on the context.

  • If Linux receives an Interrupt from IPCC, is Linux handling the Interrupt directly or will the functions executed later from a worker-thread? This would be nice to know.

=> On IPCC interruption a work is registered in the remoteproc driver to treat the new messages out of the interrupt context.

  • The reading function seems to be more complicated and needs more ecextuion time than just writing?!

=> Right, and the your Cortex-M4 firmware is probably in a while loop waiting new messages. The Linux can execute some other thread in parallel.

Please also notice that the data rate depends on the size of the RPMsg buffers and the number of buffer used.

For more information, you can consult this article:  https://wiki.st.com/stm32mpu/wiki/Exchanging_buffers_with_the_coprocessor