cancel
Showing results for 
Search instead for 
Did you mean: 

Multiple Rpmsg Channels

YRink.1
Associate II

Hi,

i just implemented the OpenAMP_tty_echo example for my device. And i just wanna know if i have the right understanding for it. Iam using two virtualUARTS, does this mean that i have two Endpoints over one RPMSG Channel. Or do i have two RPMSG Channel with one endpoint at one Channel? In my Undertsanding i have one RPMSG Channel with two Endpoints VirtUART0 and VirtUART1. Is there any use case to have multiple RPMSG Channels for communicating between the A7 and M4 (like shown in the picture)? And how i could integrate it? I should have another vdev device with again seperated Memory in the Shared Memory. Is my understanding correct in this cases?

Thanks so far

1 REPLY 1
ArnaudP
Senior

> i just implemented the OpenAMP_tty_echo example for my device. And i just wanna know if i have the right understanding for it.

> Iam using two virtualUARTS, does this mean that i have two Endpoints over one RPMSG Channel. Or do i have two RPMSG

> Channel with one endpoint at one Channel? In my Undertsanding i have one RPMSG Channel with two Endpoints VirtUART0 and

> VirtUART1.

The notion of channel and endpoint in RPMsg is not obvious. I suggest you to have a look to the RPMsg wiki page for definitions about RPMsg bus, channels and endpoints.

That said, in OpenAMP lib the notion of channel is mixed with the endpoint, so we can consider that we can have only one endpoint per channel.

Applying this to the OpenAMP_tty_echo example, consider that we have in fact 2 instances of the ""rpmsg-tty-channel" channel with one endpoint per channel.

> Is there any use case to have multiple RPMSG Channels for communicating between the A7 and M4 (like shown in the picture)?

Yes the virt_uart is an example but there is no limit of channels as it is a virtual connection between endpoints, just need to have the pending driver in Linux Kernel that support the channel service name.

> And how i could integrate it?

you need a Kernel Linux which supports the service, then on Cortex-M4 you just has to create the endpoint with the appropriate service name.

> I should have another vdev device with again separated Memory in the Shared Memory. Is my understanding correct in this cases?

A vdev is relying on the vrings and represent the rpmsg bus. Instantiate the vdev means duplicate the bus ( vrings/Rpmsg buffers and mailboxes). I discourage to do this if you don't need this.