Ethernet frame exchange using RPMsg between the A53 and the M4

Hello,
I am currently working on the i.MX8M Mini processor and especially on the i.MX 8M Mini Evaluation Kit.
My goal is to be able to pass Ethernet frames through the Cortex-A53 and the Cortex-M4.
I was interested in the available means to exchange data between the A53 and the M4 and I saw that it was possible to use the RPMsg protocol.

So I tested this protocol by downloading a binary on the M4, loading the RPMsg driver on the A53 and writing on the corresponding tty from the user space of the A53.

Before I go any further with my software development, I have a few questions that I thought you might find answers to:

  • According to NXP documentation (GitHub - NXPmicro/rpmsg-lite: RPMsg implementation for small MCUs), it says that the RPMsg protocol uses master/remote communication. Thus, the remote is just waiting for a message from the master. Once the message is received from the master, the remote processes the data and then replies to the master. So my question is: is the RPMsg protocol half-duplex or full-duplex?
  • If it is full-duplex, does the RPMsg protocol support having two multi-threaded applications (one on each processor) exchanging data simultaneously over the same RPMsg link?
  • More generally, do you recommend using RPMsg to transit Ethernet frames?

Hi @martin.denion !

Could you please share more information about what you are trying to accomplish? This way we can better support you.

  • What kind of Ethernet frames do you need to send/receive?
  • Do you plan to use TCP/IP?

For sure the best place to get this kind of information is directly from NXP’s documentation. But from what we understand, it is full-duplex: the messages that are sent/received create a control channel that exchanges information about the shared memory area between the Cortex-A and Cortex-M.

Also, you talked about i.MX 8M Mini Evaluation Kit. Are you using Toradex’s Verdin iMX8M Mini SoM? Maybe you would like to take a look at this module: Computador em Módulo NXP i.MX 8M Mini / Nano.

Best regards,