This is the documentation for the latest (main) development branch. If you are looking for the documentation of previous releases, use the drop-down menu on the left and select the desired version.

OpenAMP Linux RPC Demo

Linux RPC Intro

The RPMsg Multi Services reference sample demonstrates OpenAMP Remote Procedure Call (RPC) components between two linux processors, one as the main controller and the other as remote.

../_images/linux-rpc-intro.svg

Linux RPC Components

This demonstration shows how the Remote Procedure Call (RPC) component is a shim over RPMSg providing the familiar Input/Output (IO) commands like open, read, write, close both for files and standard input/output.

The underlying OpenAMP architectural components used by these applications are

The Linux file and stdio access is performed in the linux_rpc_demod application.

The following architecture diagram shows the primary components involved in the demonstration.

../_images/linux-rpc-components.svg

The top-level control flow is shown in the following message diagram.

../_images/linux-rpc-control-flow.svg

Linux RPC Server

The Linux RPC Server application is a file handling server and achieves this by providing a shim over the RPC component of OpenAMP, with pointers, and associated identifiers for each of the file IO functions like open, close, read write, and input for stdio.

Whenever the server receives an RPMsg on this end point with the associated identifier it will perform the file IO on behalf of the client/remote.

Linux RPC Client

The Linux RPC Client application is a remote/client application requiring file handling, but lacking a file system. Instead it relies on a main server to provide the file handling via RPMsg. It initializes an RPC client, associated through the server identifiers. For each IO handler it will send an RPMsg on the associated endpoint.

The OpenAMP RPC client does not block to await the RPMsg response, leaving this to the application to perform. In the sample client this is performed for each of the input output functions.

Linux RPC Demo Source

Linux RPC Server Source

The current implementation is a Linux process linux_rpc_demod, which can be run as a daemon to provide the main controller/driver side of the demonstration.

Linux RPC Client Source

The current implementation is a Linux process linux_rpc_demo

Reference Board Implementations

This Linux RPC Sample is demonstrated in the following reference implementations.