Tool/software:
I am having trouble getting IPC to consistently work between two R5 cores using the J721EXSOMXEVM and carrier board using IPC on freertos.
I did get the IPC echotest freertos to work, Though it is complex to work with becasue of all the different possible processors and boards it supports.
However, I used it as an example for a much simpler application that I wanted to prove out.
MCU2_0 has data that it wants to send to MCU2_1 who will receive it. However, This does not consistently work depending on how the two processors are started up. So I did some searching and found the following forum discussion that seemed relevant:
So I implemented a method/function that tries to do exaclty what is outlined in that "solution"
So each of my processors has a function they implement in a task that does the following:
- Initializes all the IPC stuff (Ipc_init, VirtIO, RPMessage_init)
- Call an RPMessage_create to get a handle and my endpoint
- RPMessage_annouce a common service name
- RPMessage_getREmoteEndPt
- RPMessage_send a dummy message ("TestX where X is the source processor number)
- RPMessage_recv the dummy message.
However, that synchronization does not work for me. I have to start the MCU2_1 processor first to even get past the Announce and get to the message sends and receives. Then MPU2_1 gets the sent message but MPU2_0 never gets MPU2_1's sent message.
If I start MCU2_0 first then I never get the Announce from either of them.
This order and timing of how the IPC must be started is not making sense to me.