I’m going to describe a really weird issue, and so I know perfectly that it will be difficult to investigate and find a solution.
But maybe, sharing ideas and efforts could bring to something useful.
I implemented rpmsg using ARM.AMP 1.0.1-dev1 from ARM CMSIS_5 on M4 core (I use Keil DS-MDK IDE) and rpmsg library included in Toradex CE Libraries 2.2b4428-20180525 on A5 core running CE 6.
I found that rpmsg communication between M4 and A5 core of VF61 is not reliable in this sense:
- I compile sources for M4 and the communication works
- I change something in M4 application (i.e. either I increase the size of some buffers - without using and/or accessing the extra space; or I add other code to my sources, so increasing the code size) and rpmsg communication doesn’t work anymore
When I say “doesn’t work anymore” I mean that CE 6 doesn’t see answer from M4 core, even if I increase to rx timeout to 1 second or more.
Based on this situation, I used GPIO pins to debug M4 firmware, and I see that M4 firmware works as expected: M4 receives the message from A5 and answers in milliseconds (as it does when the communication works).
This is really strange for me, and so I though to some problems in rpmsg library for CE 6 (memory not cleaned, or something like that).
I tried to use Map_Mem library to map
TxRingAddr buffers on CE 6 side, but I don’t see what I expected to do (even when communication works).
I don’t know if the issues can be somehow related, or not.
I need help finding some ideas on how to narrow-down and debug what happened.