multiple shared memory in RPMSG

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

multiple shared memory in RPMSG

1,116 Views
mehmetkaradag
Contributor III

Hi, 

I'm using RT1176. 

i want to create multiple shared memory that running in parallel. I read the document in the link "GitHub - nxp-mcuxpresso/rpmsg-lite: RPMsg implementation for small MCUs" and it says that I need to set the RL_ALLOW_CUSTOM_SHMEM_CONFIG macro. But when i set that macro  "rpmsg_platform_shmem_config_t" struct and "platform_get_custom_shmem_config" function become available. But there are no definition and declaration for them. is there any example or application note about multiple shared memory config. 

Sharing a picture about the problems I'm experiencing.

mehmetkaradag_0-1729248906710.png

thanks for helping.  

 

 

 

0 Kudos
Reply
9 Replies

1,023 Views
mayliu1
NXP Employee
NXP Employee

Hi @mehmetkaradag ,

 

If you have any questions, you can ask Michal, who is an expert in this area.

 

Best Regards

mayliu

0 Kudos
Reply

1,085 Views
mayliu1
NXP Employee
NXP Employee

Hi @mehmetkaradag ,

Thank you so much for your interest in our products and for using our community.

I‘m trying to do the same operation as yours, the result is the same.

mayliu1_0-1729482257719.png

there are no definition and declaration for  macro  "rpmsg_platform_shmem_config_t" struct and "platform_get_custom_shmem_config" function.

But don't worry, I'll consult with the relevant experts for help and I'll get back to you as soon as I have feedback. 

Please be patient.

Have a nice day.

 

Best Regards

mayliu

0 Kudos
Reply

1,052 Views
MichalP
NXP Employee
NXP Employee

Hi @mehmetkaradag ,

the custom shared memory configuration (driven by the RL_ALLOW_CUSTOM_SHMEM_CONFIG config macro) has been enabled just for some platforms, rt1170 is not covered. If you require that in your application, you can adjust the rt1170 platform layer. You can have a look at the imx8ulp platform layer how this is done: https://github.com/nxp-mcuxpresso/rpmsg-lite/tree/main/lib/rpmsg_lite/porting/platform/imx8ulp_m33


Could you please describe your case and the desired rpmsg_lite setup a little more? How many instances do you require? Is the different amount of buffers and buffer sizes required for each rpmsg_lite instance?

 

Thank you

Best Regards

Michal

0 Kudos
Reply

1,006 Views
mehmetkaradag
Contributor III

Hello @MichalP

 

What I want to achieve is the following: I will have two instances. While the master (M7) transmits to one instance (let's call it instance A), the slave (M4) will receive from that instance (instance A). Meanwhile, when the slave (M4) transmits to another instance (let's call it instance B), the master (M7) will receive from that instance (instance B).

 

Could you please help me on what I can do regarding this? Unfortunately, the related documentation wasn't very helpful.

 

Thank you in advance for your assistant.

0 Kudos
Reply

986 Views
MichalP
NXP Employee
NXP Employee

Hi @mehmetkaradag ,

thanks for providing insight into your case. Have you considered only one instance and multiple endpoints making this easier or is it really necessary to have two instances and both the master and remote on each core?

If two instances are needed as described by you, I would start with default shared memory configuration first and then once all is setup and running well we could try to switch to custom shared memory configuration (i.e. different amount of buffers and buffer sizes required for each rpmsg_lite instance). Could you please help me understand which phase is your rpmsg_lite setup in? Have you already succeeded in running two instance as described in your previous post?

Thanks

Best Regards

Michal

0 Kudos
Reply

970 Views
mehmetkaradag
Contributor III

Hi @MichalP 

I want actually each core to perform sending and receiving operations at different times or simultaneously (in parallel). Core A should be able to send without waiting for the receive operation to complete. 

thanks for your help.

0 Kudos
Reply

742 Views
MichalP
NXP Employee
NXP Employee

Hello @mehmetkaradag 

I am sorry for my late response ... I am still not convinced if having two rpmsg_lite instances is really necessary in your case ... once having only one instance you can still "perform sending and receiving operations at different times or simultaneously". 

You can create multiple endpoints on both the master and the remote side and implement the sending/receiving logic between these endpoints. I would recommend to have a look at rpmsg_lite examples we provide for rt1170 within the MCUXpressoSDK, there is rpmsg_lite_pingpong example for baremetal and rpmsg_lite_pingpong_rtos for FreeRTOS env. Once running well on your board you can gradually add more endpoints and implement the desired application logic. Is that acceptable for you?

Thank you

Best Regards

Michal

963 Views
MichalP
NXP Employee
NXP Employee

Hello @mehmetkaradag 

I am out of the office till Oct-31. I will get back to you then, ok?

Thank you

Best Regards

Michal

0 Kudos
Reply

934 Views
mehmetkaradag
Contributor III

Hi @MichalP , 

 

Of course, no problem. I'll be looking forward to your assistance when you return to work.

 

Thank you ın advance for your assistant. 

0 Kudos
Reply