Rpmsg Corruption After M4 Reset

After M4 side reset(watchdog reset), when communicating from A7( A7 side application remains running while M4 resets) with M4 lots of garbage data coming to M4 side repeatedly from A7.

In my application I am sending 8 bytes of data from A7 to M4 through rpmsg and at M4 side(using modified “str_echo_bm.c” application for receiving the message and sending the received message on debug UART of M4) messages come repeatedly to Slot 0, Slot 1 and Slot 3 for 3 times. And this is totally unexpected behaviour.

(this post was split from the related article “Halt the Baremetal application on M4 core in iMX7”)

We never tested the behavior of the rpmsg system if one side is reset in the middle of a communication. It is well possible that rebooting the M4 will re-initialize memory areas which are used to synchronize the M4 vs the A7. It might be required to restart the rpmsg communication on both the M4 and A7 side in order to re-synchronize.
Again, I didn’t test this behavior, it is just an educated guess about the possible cause and solution of the problem.

Regards, Andy

Hi Andy,

We chose this architecture(SOM) because of the heterogeneous cores and facility of rpmsg library.
We wish there are more detailed information and practical scenario with capabilities and limitations of this architecture.

Is this the case with WinCE only or same kind of information available in Linux environment too ?


Dear @bipin7301

In a first step, this is a freeRTOS issue, independent of the fact whether Linux or WinCe is used on the A7 core.
For freeRTOS, you have all source code, so you can easily debug the code to analyze what is going on after a M4 reset. The freeRTOS rpmsg code was provided by nxp, I’m afraid afaik there’s no additional documentation available.

Regards, Andy

Hi Andy,

Could you please help me with this issue if you have resolved.

I am facing similar issue, did anyone resolve or find solution to this issue?

Dear @Nikhil_J ,

Unfortunately we don’t support FreeRTOS directly. As Andy pointed out in his last answer, full source is available so it might be possible for you to adjust the behavior to your needs.