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.