Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Changes A for Issue 38 #41

Open
wants to merge 19 commits into
base: main-next
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion demos/demos_index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ OpenAMP Samples and Demos
:caption: Contents:

echo
matrix_multiply
rpmsg_multi_services
matrix_multiply
linux_rpc
hvl_virtio
split_mode
Expand Down
6 changes: 3 additions & 3 deletions demos/docker_images.rst
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ At this time the following images are provided:
* - Name
- Description
* - openamp/demo-lite
- Just enough to run the openamp QEMU demos and :ref:`supporting tools<tools_label>`, like lopper CLI demo
- Just enough to run the OpenAMP QEMU demos and :ref:`supporting tools<tools_label>`, like lopper CLI demo
* - openamp/demo
- Placeholder for image *to build* and run the above demos

Expand Down Expand Up @@ -61,7 +61,7 @@ You can check your groups with the command:
.. warning::
If you cannot add yourself to the docker group, you can run docker with ``sudo``
but doing so with *any* docker image is not recommended based on general
security best practice. There is nothing in the openamp images that should
security best practice. There is nothing in the OpenAMP images that should
make them more dangerous than other images.

Your life will be easier if you are not behind a corporate firewall.
Expand Down Expand Up @@ -392,7 +392,7 @@ You can manually send output to the 2nd UART like so:
Docker cheat-sheet
******************

First some tips specific to the openamp demo containers
First some tips specific to the OpenAMP demo containers

The container is based on the standard Ubuntu 20.04 docker image.
Like the Ubuntu standard images it is minimized (no man pages etc).
Expand Down
26 changes: 13 additions & 13 deletions demos/echo.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ OpenAMP Echo Test Sample
Echo Test Intro
***************

The echo test reference sample, as the name suggests, demonstrates OpenAMP :ref:`Interprocessor Communications (IPC)<ipc-work-label>` components by providing an echo application on a remote which simply returns (echoes) packets as they are received at an :ref:`RPmsg endpoint <rpmsg-endpoint>` from the host controller. The host controller then verifies the returned packet for integrity.
The echo test reference sample, as the name suggests, demonstrates OpenAMP :ref:`Interprocessor Communications (IPC)<ipc-work-label>` components by providing an echo application on a remote which simply returns (echoes) packets as they are received at an :ref:`RPMsg endpoint <rpmsg-endpoint>` from the main controller. The main controller then verifies the returned packet for integrity.

.. image:: ../images/demos/echo-test-intro.svg

Expand All @@ -19,8 +19,8 @@ Echo Test Components
********************

There are two applications involved in this demonstration.
The :ref:`remote application<echo-test-remote-app>` runs as an echo service, which returns packets it receives on an :ref:`RPmsg endpoint <rpmsg-endpoint>`.
The :ref:`host application<echo-test-host-app>` is the test application sending packets to the echo service and monitoring for their return.
The :ref:`remote application<echo-test-remote-app>` runs as an echo service, which returns packets it receives on an :ref:`RPMsg endpoint <rpmsg-endpoint>`.
The :ref:`main controller application<echo-test-host-app>` is the test application sending packets to the echo service and monitoring for their return.

The underlying OpenAMP architectural components used by these applications are

Expand All @@ -42,25 +42,25 @@ The top-level control flow is shown in the following message diagram.

.. _echo-test-remote-app:

RPmsg Echo Remote Application
RPMsg Echo Remote Application
=============================

The remote application, rpmsg-echo, is the core of the demonstration. It is a simple application serving a :ref:`RPmsg endpoint <rpmsg-endpoint>` running as the main task on the remote processor, once loaded and started using :ref:`Remoteproc<overview-remoteproc-work-label>`.
The remote application, rpmsg-echo, is the core of the demonstration. It is a simple application serving a :ref:`RPMsg endpoint <rpmsg-endpoint>` running as the main task on the remote processor.


.. _echo-test-host-app:

Echo Test Host Application
Echo Test Main Application
==========================

The echo_test application forms the host controller side of the demonstration. It repeatedly writes an increasing length payload of 0xA5's up to the maximum data size (packet size minus header) to the RPmsg endpoint. Following each packet send, it reads from the same endpoint and verifies the returned packet for correctness. The application will stop and report on the first corruption found.
The echo_test application forms the main controller side of the demonstration. It repeatedly writes an increasing length payload of 0xA5's up to the maximum data size (packet size minus header) to the RPMsg endpoint. Following each packet send, it reads from the same endpoint and verifies the returned packet for correctness. The application will stop and report on the first corruption found.

Echo Test Host Script
Echo Test Main Script
=====================

The host is also responsible for loading the firmware containing the :ref:`RPmsg Echo Remote Application<echo-test-remote-app>` and starting the remote processor using :ref:`Remoteproc<overview-remoteproc-work-label>`.
The main controller is also responsible for loading the firmware containing the :ref:`RPMsg Echo Remote Application<echo-test-remote-app>` and starting the remote processor using :ref:`Remoteproc<overview-remoteproc-work-label>`.

For host controllers, like Linux, a script can be used to pipe the firmware to the exposed remoteproc system, followed by the execution of the user space echo_test application. For controllers without scripting capability, like baremetal and RTOS (Real Time Operating systems), this would be achieved in the code.
For main controllers, like Linux, a script can be used to pipe the firmware to the exposed remoteproc system, followed by the execution of the user space echo_test application. For controllers without scripting capability, like baremetal and RTOS (Real Time Operating systems), this would be achieved in the code.

In the :ref:`Demo Docker Images<docker-images-label>` this is script demo1A.

Expand All @@ -71,7 +71,7 @@ Echo Test Source
RPMsg Echo Baremetal Source
===========================

The RPMsg Echo service application is available as a baremetal solution in the `open-amp Repository <https://github.com/OpenAMP/open-amp/blob/main/apps/examples/echo/rpmsg-echo.c>`_
The RPMsg Echo service application is available as a baremetal solution in the `open-amp Repository <https://github.com/OpenAMP/openamp-system-reference/blob/main/examples/legacy_apps/examples/echo/rpmsg-echo.c>`_

It is a CMake application and can be built for any remote as long as the relevant :ref:`OS/HW abstraction layer<porting-guide-work-label>` components like libmetal are ported for that platform.

Expand All @@ -80,12 +80,12 @@ It is a CMake application and can be built for any remote as long as the relevan
Echo Test Linux Source
======================

The echo test Linux application is executed on the Linux host controller as a user space application.
The echo test Linux application is executed on the Linux main controller as a user space application.
The application is available in the `OpenAMP System Reference repository <https://github.com/OpenAMP/openamp-system-reference/blob/main/examples/linux/rpmsg-echo-test/echo_test.c>`_.

It is a Makefile application and can be built using the `Yocto rpmsg-echo-test recipe <https://github.com/OpenAMP/meta-openamp/blob/master/recipes-openamp/rpmsg-examples/rpmsg-echo-test_1.0.bb>`_

An example host control script is given in the `echo test readme <https://github.com/OpenAMP/openamp-system-reference/blob/main/examples/linux/rpmsg-echo-test/README.md#run-the-demo>`_
An example main control script is given in the `echo test readme <https://github.com/OpenAMP/openamp-system-reference/blob/main/examples/linux/rpmsg-echo-test/README.md#run-the-demo>`_

*******************************
Reference Board Implementations
Expand Down
12 changes: 6 additions & 6 deletions demos/hvl_virtio.rst
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ All demonstrations are run on a remote running `Zephyr Operating System (OS) <ht
Hypervisorless Virtio Components
********************************

This demonstration uses a single application on the remote and a setup and demo script on the host.
This demonstration uses a single application on the remote and a setup and demo script on the main controller.

The underlying OpenAMP architectural components used by these applications are

Expand All @@ -46,14 +46,14 @@ The top-level control flow is shown in the following message diagram.
Hypervisorless Virtio Remote Application
========================================

The remote application is the core of the demonstration. It is a simple application utilising a number of Virtio devices, once loaded and started using :ref:`Remoteproc<overview-remoteproc-work-label>`.
The remote application is the core of the demonstration. It is a simple application utilising a number of Virtio devices.

The remote application when started initially calls on the `Virtio Entropy Device <https://docs.oasis-open.org/virtio/virtio/v1.3/csd01/virtio-v1.3-csd01.html#x1-3360004>`_ to obtain entropy values to print to the UART console. Subsequently, it sets up `Virtio Network Device <https://docs.oasis-open.org/virtio/virtio/v1.3/csd01/virtio-v1.3-csd01.html#x1-2340001>`_ to provide communications between the host at 192.168.200.254 and remote at 192.168.200.2.
The remote application when started initially calls on the `Virtio Entropy Device <https://docs.oasis-open.org/virtio/virtio/v1.3/csd01/virtio-v1.3-csd01.html#x1-3360004>`_ to obtain entropy values to print to the UART console. Subsequently, it sets up `Virtio Network Device <https://docs.oasis-open.org/virtio/virtio/v1.3/csd01/virtio-v1.3-csd01.html#x1-2340001>`_ to provide communications between the main controller at 192.168.200.254 and remote at 192.168.200.2.

Hypervisorless Virtio Host Script
Hypervisorless Virtio Main Script
=================================

The host is responsible for setting up a `virtual/tap network <https://en.wikipedia.org/wiki/TUN/TAP>`_, loading the firmware containing the :ref:`Hypervisorless Virtio Application<hvl-virtio-remote-app>` and starting the remote processor using :ref:`Remoteproc<overview-remoteproc-work-label>`.
The main controller is responsible for setting up a `virtual/tap network <https://en.wikipedia.org/wiki/TUN/TAP>`_, loading the firmware containing the :ref:`Hypervisorless Virtio Application<hvl-virtio-remote-app>` and starting the remote processor using :ref:`Remoteproc<overview-remoteproc-work-label>`.

The scripts are available in the :ref:`Demo Docker Images<docker-images-label>` as `demo4 <https://github.com/OpenAMP/openamp-demo/blob/main/demos/demo-hvl-virtio/my-extra-stuff/home/root/demo4>`_ and `setup.sh <https://github.com/OpenAMP/openamp-demo/blob/main/demos/demo-hvl-virtio/my-extra-stuff/hvl/setup.sh>`_.

Expand All @@ -76,7 +76,7 @@ Reference Board Implementations

This Hypervisorless Virtio Samples are demonstrated in the following reference implementations.

* :ref:`Docker Images<docker-images-label>` as demo1A
* :ref:`Docker Images<docker-images-label>` as demo4
* :ref:`AMD-Xilinx platforms<demos-AMD-work-label>`

For information on building and running the demonstrations for zcu102 refer to
Expand Down
10 changes: 5 additions & 5 deletions demos/inter_process.rst
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
.. _inter-process-reference-label:

===========================
OpenAMP Inter Process Demos
===========================
===================================
Running Demos as Processes on Linux
===================================

The `OpenAMP project examples <https://github.com/OpenAMP/open-amp/tree/main/apps/examples>`_
are intended to execute on the remote of a reference board but can also be demonstrated by implementing as a process on the host, effectively emulating a remote.
are intended to execute on the remote of a reference board but can also be demonstrated by implementing as a process on the main controller, effectively emulating a remote.

This can be useful for demonstration purposes, but can also be leveraged for component testing, even as part of a continuous integration setup.

Effectively the `OpenAMP Library <https://github.com/OpenAMP/open-amp/tree/main/lib>`_ and `reference examples <https://github.com/OpenAMP/open-amp/tree/main/apps/examples>`_ are built for the host system along with the `host examples <https://github.com/OpenAMP/openamp-system-reference/tree/main/examples/linux>`_.
Effectively the `OpenAMP Library <https://github.com/OpenAMP/open-amp/tree/main/lib>`_ and `reference examples <https://github.com/OpenAMP/open-amp/tree/main/apps/examples>`_ are built for the main controller system along with the `main controller examples <https://github.com/OpenAMP/openamp-system-reference/tree/main/examples/linux>`_.

To build and execute on a Linux system, refer to the `example to compile OpenAMP for communication between Linux processes <https://github.com/OpenAMP/open-amp/blob/main/README.md#example-to-compile-openamp-for-communication-between-linux-processes>`_.
10 changes: 5 additions & 5 deletions demos/linux_rpc.rst
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ OpenAMP Linux RPC Demo
Linux RPC Intro
***************

The RPMsg Multi Services reference sample demonstrates OpenAMP :ref:`Remote Procedure Call (RPC)<overview-proxy-rpc-work-label>` components between two linux processors, one as the host and the other as remote.
The RPMsg Multi Services reference sample demonstrates OpenAMP :ref:`Remote Procedure Call (RPC)<overview-proxy-rpc-work-label>` components between two linux processors, one as the main controller and the other as remote.

.. image:: ../images/demos/linux-rpc-intro.svg

Expand All @@ -31,7 +31,7 @@ The underlying OpenAMP architectural components used by these applications are
* :ref:`RPC<overview-proxy-rpc-work-label>`
* :ref:`Libmetal<overview-proxy-libmetal-label>`

The Linux file and stdio access is performed in the `linux_rpc_demod application <https://github.com/OpenAMP/open-amp/blob/main/apps/examples/linux_rpc_demo/linux_rpc_demod.c>`_.
The Linux file and stdio access is performed in the `linux_rpc_demod application <https://github.com/OpenAMP/openamp-system-reference/blob/main/examples/legacy_apps/examples/linux_rpc_demo/linux_rpc_demod.c>`_.

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

Expand All @@ -58,7 +58,7 @@ Whenever the server receives an RPMsg on this end point with the associated iden
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 host server to provide the file handling via RPMsg. It initialises an RPC client, associated through the server identifiers. For each IO handler it will send an RPMsg on the associated endpoint.
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 initialises 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.

Expand All @@ -71,12 +71,12 @@ Linux RPC Demo Source
Linux RPC Server Source
=======================

The current implementation is a Linux process `linux_rpc_demod <https://github.com/OpenAMP/open-amp/blob/main/apps/examples/linux_rpc_demo/linux_rpc_demod.c>`_, which can be run as a daemon to provide the host/driver side of the demonstration.
The current implementation is a Linux process `linux_rpc_demod <https://github.com/OpenAMP/openamp-system-reference/blob/main/examples/legacy_apps/examples/linux_rpc_demo/linux_rpc_demod.c>`_, 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 <https://github.com/OpenAMP/open-amp/blob/main/apps/examples/linux_rpc_demo/linux_rpc_demo.c>`_
The current implementation is a Linux process `linux_rpc_demo <https://github.com/OpenAMP/openamp-system-reference/blob/main/examples/legacy_apps/examples/linux_rpc_demo/linux_rpc_demo.c>`_


*******************************
Expand Down
Loading