Somebody can help me with Cortex M4 on Colibri IMX7D (emmc version)?

Hello everybody;

I’m creating a system that uses Colibri IMX7D and I need to use the Cortex M4 to deal with real time issues. For that, I need to use rpmsg to communicate with Linux and need to control M4 through Linux using remoteproc.

I read the topics about bringing up FreeRTOS on Cortex M4 and a lot of threads on forum, but no one is complete enough to bring it up in the current kernel (at this moment, I’m using 6.1.74).

To make things simple, I’m using Yocto Core Image minimal as base image and using the rpmsgs examples from FreeRTOS packet.

At this moment I can use Cortex M4 using remote proc, but rpmsg devices isn’t beeing mounted when I do the modprobes.

In simple words, what I need is: Device tree customization and update procedures to make examples work.

Best Regards

Hello @Takaite !

Welcome to the Toradex Community!

Unfortunately, the RPMSg for Colibri iMX7 only works on NXP downstream kernel. If you are willing to use the upstream kernel, one alternative should be using Zephyr, it should work, but looking internally we didn’t test it.

Is RPMSg mandatory for your project? Isn’t the remote proc enough in this case?
Another alternative to communicate between cores is using the Shared Areas as described here.

Please let me know your thoughts on this and we will do the best we can to help you.

Best regards,
Daniel Morais

Thanks for your reply.

Your answer riso me some questions:

  1. There is any issue with rpmsg on IMX7D? Or just because it is not been maintained by you?
  2. What did you mean with remote proc is not enough? Can I use remote proc as IPC?
  3. Maybe shared memory can work. Do you have any example?

Best Regards,

Hi @Takaite ,

Answering your question:

There isn’t any issue with RPMSg on iMX7D. Since the iMX7D is a processor developed by NXP, we depend on what they offer in this case, so for now, it only works for the Downstream kernel. There are some initiatives like this one who ported the Zephyr to our iMX7, but as mentioned we didn’t test it and don’t maintain it today.

Sorry, it was my mistake here, the remote proc is only used to control and can’t be used as IPC.

Perfect! We have this example, can you please do some tests and let us know if it works for you? Since it is just writing and reading registers we expect it to work with any kernel version.

Best regards,
Daniel Morais