Dual channel Rpmsg

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
已解决

Dual channel Rpmsg

跳至解决方案
1,451 次查看
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 解答
1,392 次查看
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

在原帖中查看解决方案

1 回复
1,393 次查看
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