Dual channel Rpmsg

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 
1,190件の閲覧回数
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,131件の閲覧回数
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,132件の閲覧回数
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