AnsweredAssumed Answered

i.MX8QXP RPMsg communication between M4 and A35 cores

Question asked by ajmalali on Sep 28, 2018
Latest reply on Oct 23, 2018 by cheng yuhao



I am trying to set up multicore communication using RPMsg in IMX8QXP, in which freertos is running in M4 core and linux in A35. I am using the 'rpmsg_lite_str_echo_rtos' example from NXP FreeRTOS SDK 2.3. I was successfully able to create virtual tty '/dev/RPMSG'. Also i was able to send data to M4 core using 'echo' command from linux, and readback the acknowledgement at A35.

Now i want to use this same channel to pass data from Linux continuously to M4 (and read the acknowledgements). What I am looking for, is a simple userspace application in c using basic open, read, write commands to pass data from A35 to M4.

I tried this and got the results below : 

  • The code works fine for a single write instruction.
  • When i continuously write to the channel, i get some junk data in between at M4. Also the linux part becomes slow (I am trying to read data after each write to free the buffer).
  • The read part in linux is not at all working. The C code gets blocked whenever a read instruction is used (Even when i am using NONBLOCK mode).
  • If there is only a single write instruction, and i put a delay after it, same thing occurs (M4 receives junk data while the linux is in delay loop).


I also tried using fopen, fwrite, fflush, fread commands with same results.

I am only using the basic open, read write commands. Am i missing something here? Please help.


please revert back if you need any more details.