Dual channel Rpmsg

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Dual channel Rpmsg

Jump to solution
1,137 Views
biafra
Senior Contributor I

Hi everyone,

I'm working on a project using a custom board based on imx8m mini. I have to desing the communication between A53 cores and M4 core using rpmsg.
I already saw the rpmsg ping pong example and it's working fine on my board.

To avoid polling mechanism on both sides, I'd want to have the A53 cores waiting for a message from the M4 core and at the same time the M4 core waiting for a message from the A53 cores on a different channel.
How can this be achived?
Do I have to duplicate the instructions between rpmsg_lite_remote_init() and rpmsg_ns_announce() in the main_remote.c source file of the rpmsg ping pong example?
Or is there a better solution?

Many thanks
Biafra

1 Solution
1,078 Views
Sanket_Parekh
NXP TechSupport
NXP TechSupport
Hi @biafra ,
 
I hope you are doing well.
 
you can create multiple channels in rpmsg lite.
 
you can follow the below suggestions to create multiple channels in rpmsg-lite:
- need separate vdev rings allocations(VDEVn_VRING_BASE) in board.h and RL_PLATFORM_IMX8MN_M7_USER_LINK_ID at /middleware/multicore/rpmsg_lite/lib/include/platform/imx8mn_m7/rpmsg_platform.h
- need a separate definition for LOCAL_EPT_ADDR, RPMSG_LITE_SHMEM_BASE, RPMSG_LITE_LINK_ID.
-  have to make multiple calls to rpmsg_lite_remote_init(),rpmsg_lite_wait_for_link_up(),rpmsg_queue_create(),rpmsg_lite_create_ept(),rpmsg_ns_announce().
 
Thanks & Regards
Sanket Parekh

View solution in original post

1 Reply
1,079 Views
Sanket_Parekh
NXP TechSupport
NXP TechSupport
Hi @biafra ,
 
I hope you are doing well.
 
you can create multiple channels in rpmsg lite.
 
you can follow the below suggestions to create multiple channels in rpmsg-lite:
- need separate vdev rings allocations(VDEVn_VRING_BASE) in board.h and RL_PLATFORM_IMX8MN_M7_USER_LINK_ID at /middleware/multicore/rpmsg_lite/lib/include/platform/imx8mn_m7/rpmsg_platform.h
- need a separate definition for LOCAL_EPT_ADDR, RPMSG_LITE_SHMEM_BASE, RPMSG_LITE_LINK_ID.
-  have to make multiple calls to rpmsg_lite_remote_init(),rpmsg_lite_wait_for_link_up(),rpmsg_queue_create(),rpmsg_lite_create_ept(),rpmsg_ns_announce().
 
Thanks & Regards
Sanket Parekh