-
Notifications
You must be signed in to change notification settings - Fork 10
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
Documentation Update and Restructure #37
Open
sipke
wants to merge
65
commits into
OpenAMP:main
Choose a base branch
from
sipke:sv-main
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+15,470
−348
Open
Changes from 31 commits
Commits
Show all changes
65 commits
Select commit
Hold shift + click to select a range
925bf7f
overview: add AMP overview and introduce OpenAMP fundamentals
6b30c63
overview: provide high level architecture and diagram
40dacd0
overview: restructure and reword remaining sections
9072488
overview: small adjustments to overview page
8218504
overview: adjust images
0507788
overview: add master, slave and remote terms to topology example diagram
4c9723a
overview: add architecture sections and update references
a558125
overview: update architecture image to improve formatting online
b570981
overview: add and fix references and rearranged some paragraphs
1a26c84
overview: repeat architecture diagrams with highlighted components
efb94b1
overview: correct rpms architecture diagram object order and minor up…
47c40e4
overview: adjust topology naming to host remote
bae8713
rpmsg: add reference to rpmsg-endpoint
dc7d57a
demos: add a new demos index file and initial echo demo info
404e41a
index: add new demos index page to main index
0558aca
demos:echo: add diagram showing components and application in echo demo
b891b72
demos: remove peripherals and rpc from echo test architecture diagram
177b9c4
demos: add control flow diagram for echo test
d200d10
demos: add Reference Boards section in Reference Samples
618abea
demos: minor changes to demo text and titles
7f4c4d0
demos: remove reference boards from original demos index
49ca3f4
demos: move reference to linux app
ad2429e
demos: add matrix multiply demo/sample page
63426df
demos: add introduction to RPMsg multi services demo
986838b
demos: add component overview and control flow for RPMsg multi services
1b14585
review: adjustments based on review comments
650cb39
demos: fix broken reference board link
4920f2e
ATS: add inter process demo as a reference board
b8d212f
demos: add ioctl explanation to tty and raw character drivers
2978ed2
demos: update rpmsg demo control flow diagram to include ctrl
207599c
demos: correct sub-bullet on reference board section
15d265d
demos: use multiplex of channels on Virtio device
390a431
demos: add link for rpmsg_ctrl to source section of multi service demo
bb89973
demos: use toc to link to open-amp readme for inter process info
23169dc
overview: correct typo
bcbfd83
tools: add introduction to lopper tool
d091755
tools: minor updates to lopper introduction
d6b194a
tools: move lopper demo to tools section
b250b13
tools:lopper: add reference to runtime domain in OpenAMP introduction
5106109
design: add introduction to design/protocol details
845665b
design: add that remote can start on boot to AMP intro section
1fbace3
design: move rpmsg and remote proc under components
33eb7c4
design: adjust system considerations to use host/remote terminology
8990137
design: correct repo path to open-amp design doc folder
f6711d2
design details: add some headings to components front page
c2bff8a
design details: replace image for consistent formatting
6f29aad
design detail:components: add abstraction heading
22f8994
design details:components: reverse order of toc headings
9d14efb
library guide: correct doc folder name to open-amp repo
3595c5a
design details: change remoteproc and RPMsg intro to a table layout
2307978
design details: change lcm, rpmsg titles with capability and component
77f4936
design details: add topologies section name
0a5a53c
design details:rpmsg: rewording
8372956
design details: add summary of RPMsg implementation
3024a91
design details: move rpmsg protocol into own section/page
78eb97b
design details: rpmsg ring buffer wording adjustments and more info
b9412ec
lcm: reword and link to example shutdown message
fdf28b6
lcm: restructure into subpages
99aa4cd
lcm: fix or remove invalid links
95d01fb
design details: system considerations: minor adjustments
03c2357
design docs: add intro to distinguish why these docs exist as well
d5a4b5d
links: add link to webinar as it is a good introduction
085d6b4
design details: remove todo items from resource table and reword comp…
d06d1af
design details: expand info on resource table
e5c92db
demos: add linux rpc demo page and drawings
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
|
||
.. _demos-reference-samples: | ||
|
||
OpenAMP Samples and Demos | ||
========================= | ||
|
||
.. toctree:: | ||
:maxdepth: 2 | ||
:caption: Contents: | ||
|
||
echo | ||
matrix_multiply | ||
rpmsg_multi_services |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,5 @@ | ||
.. _docker-images-label: | ||
|
||
========================== | ||
OpenAMP Demo Docker images | ||
========================== | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,94 @@ | ||
======================== | ||
OpenAMP Echo Test Sample | ||
======================== | ||
|
||
.. _echo-test-intro: | ||
|
||
*************** | ||
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. | ||
|
||
.. image:: ../images/demos/echo-test-intro.svg | ||
|
||
.. _echo-test-components: | ||
|
||
******************** | ||
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 underlying OpenAMP architectural components used by these applications are | ||
|
||
* :ref:`Remoteproc<overview-remoteproc-work-label>` | ||
* :ref:`Resource Table<overview-remoteproc-work-label>` | ||
* :ref:`RPMsg<overview-rpmsg-work-label>` | ||
* :ref:`Virtio<overview-rpmsg-work-label>` | ||
* :ref:`Libmetal<overview-proxy-libmetal-label>` | ||
|
||
The following architecture diagram shows the components involved in the demonstration. | ||
|
||
.. image:: ../images/demos/echo-test-components.svg | ||
|
||
The top-level control flow is shown in the following message diagram. | ||
|
||
.. image:: ../images/demos/echo-test-control-flow.svg | ||
|
||
.. _echo-test-remote-app: | ||
|
||
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>`. | ||
|
||
|
||
.. _echo-test-host-app: | ||
|
||
Echo Test Host 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. | ||
|
||
Echo Test Host 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>`. | ||
|
||
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. | ||
|
||
**************** | ||
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>`_ | ||
|
||
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. | ||
|
||
.. _echo-test-linux-app: | ||
|
||
Echo Test Linux Source | ||
====================== | ||
|
||
The echo test Linux application is executed on the Linux host 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>`_ | ||
|
||
******************************* | ||
Reference Board Implementations | ||
******************************* | ||
|
||
This Echo Test Sample is demonstrated in the following reference implementations. | ||
|
||
* :ref:`Docker Images<docker-images-label>` as demo1A | ||
* :ref:`AMD-Xilinx platforms<demos-AMD-work-label>` | ||
* :ref:`Inter Process Demos<inter-process-reference-label>` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
.. _inter-process-reference-label: | ||
|
||
=========================== | ||
OpenAMP Inter Process Demos | ||
=========================== | ||
|
||
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. | ||
|
||
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>`_. | ||
|
||
To build and execute on a Linux system, refer to: | ||
|
||
* ../open-amp/README.md |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,101 @@ | ||
============================== | ||
OpenAMP Matrix Multiply Sample | ||
============================== | ||
|
||
.. _matrix-multiply-intro: | ||
|
||
********************* | ||
Matrix Multiply Intro | ||
********************* | ||
|
||
The matrix multiply reference sample, as the name suggests, demonstrates OpenAMP :ref:`Interprocessor Communications (IPC)<ipc-work-label>` components through matrix multiplication. The demonstration uses a host client, which generates random matrixes. It sends them to a service/daemon on a remote which performs a matrix calculation and returns the result via a :ref:`RPmsg endpoint <rpmsg-endpoint>`. The host controller then writes the matrix result to console output. | ||
|
||
.. image:: ../images/demos/matrix-multiply-intro.svg | ||
|
||
.. _matrix-multiply-components: | ||
|
||
************************** | ||
Matrix Multiply Components | ||
************************** | ||
|
||
There are two applications involved in this demonstration. | ||
The :ref:`remote application<matrix-multiply-remote-app>` runs as an daemon/service which performs a matrix calculation and returns the result on an :ref:`RPmsg endpoint <rpmsg-endpoint>`. | ||
The :ref:`host application<matrix-multiply-host-app>` is the client application sending two matrixes as a packet to the daemon/service and monitoring for the return result. | ||
|
||
The underlying OpenAMP architectural components used by these applications are | ||
|
||
* :ref:`Remoteproc<overview-remoteproc-work-label>` | ||
* :ref:`Resource Table<overview-remoteproc-work-label>` | ||
* :ref:`RPMsg<overview-rpmsg-work-label>` | ||
* :ref:`Virtio<overview-rpmsg-work-label>` | ||
* :ref:`Libmetal<overview-proxy-libmetal-label>` | ||
|
||
The following architecture diagram shows the components involved in the demonstration. | ||
|
||
.. image:: ../images/demos/matrix-multiply-components.svg | ||
|
||
The top-level control flow is shown in the following message diagram. | ||
|
||
.. image:: ../images/demos/matrix-multiply-control-flow.svg | ||
|
||
.. _matrix-multiply-remote-app: | ||
|
||
RPmsg Matrix Multiply Remote Application | ||
======================================== | ||
|
||
The remote application, `matrix_multiplyd <https://github.com/OpenAMP/open-amp/blob/main/apps/examples/matrix_multiply/matrix_multiplyd.c>`_, 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>`. | ||
|
||
|
||
.. _matrix-multiply-host-app: | ||
|
||
Matrix Multiply Host Application | ||
================================ | ||
|
||
The host application generates two matrices into a structure with size and 6x6 matrix, sequentially into a RPMsg packet. It then waits for matrix sized bytes to be returned and prints the resultant matrix as calculated by the remote. | ||
|
||
There are two implementations. The `mat_mul_demo <https://github.com/OpenAMP/openamp-system-reference/blob/main/examples/linux/rpmsg-mat-mul/mat_mul_demo.c>`_ application forms the host controller side of the demonstration, as a linux user space client application. The `matrix_multiply <https://github.com/OpenAMP/open-amp/blob/main/apps/examples/matrix_multiply/matrix_multiply.c>`_ application forms the host controller side of the demonstration, as a baremetal client application. | ||
|
||
|
||
Matrix Multiply Host Script | ||
=========================== | ||
|
||
The host is also responsible for loading the firmware containing the :ref:`RPmsg Matrix Multiply Remote Application<matrix-multiply-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 mat_mul_demo application. For controllers without scripting capability, like baremetal and RTOS (Real Time Operating systems), this would be achieved in the code. | ||
|
||
********************** | ||
Matrix Multiply Source | ||
********************** | ||
|
||
RPmsg Matrix Multiply Baremetal Sources | ||
======================================= | ||
|
||
There are two baremetal applications, a daemon/service to run on the remote and a host/controller application which is the matrix multiply client requesting the calculations. | ||
|
||
The RPmsg Matrix Multiply daemon/service application is available as a baremetal solution in the `OpenAMP Repository <https://github.com/OpenAMP/open-amp/blob/main/apps/examples/matrix_multiply/matrix_multiplyd.c>`_. Take note of the d for daemon at the end of the file. | ||
|
||
The RPmsg Matrix Multiple host client application is available as a baremetal solution in the `OpenAMP Repository <https://github.com/OpenAMP/open-amp/blob/main/apps/examples/matrix_multiply/matrix_multiply.c>`_ | ||
|
||
Both are 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. | ||
|
||
.. _matrix-multiply-linux-app: | ||
|
||
Matrix Multiply Linux Source | ||
============================ | ||
|
||
The matrix multiply Linux application is executed on the Linux host 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-mat-mul/mat_mul_demo.c>`_. | ||
|
||
It is a Makefile application and can be built using the `Yocto rpmsg-mat-mul recipe <https://github.com/OpenAMP/meta-openamp/blob/master/recipes-openamp/rpmsg-examples/rpmsg-mat-mul_1.0.bb>`_ | ||
|
||
An example host control script is given in the `matrix multiply readme <https://github.com/OpenAMP/openamp-system-reference/tree/main/examples/linux/rpmsg-mat-mul#run-the-demo>`_ | ||
|
||
******************************* | ||
Reference Board Implementations | ||
******************************* | ||
|
||
This Matrix Multiply Sample is demonstrated in the following reference implementations. | ||
|
||
* :ref:`Docker Images<docker-images-label>` as demo1B | ||
* :ref:`AMD-Xilinx platforms<demos-AMD-work-label>` | ||
* :ref:`Inter Process Demos<inter-process-reference-label>` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
|
||
OpenAMP Reference Boards | ||
======================== | ||
|
||
:ref:`OpenAMP Samples and Demos<demos-reference-samples>` are provided on a number of boards and virtual machines to demonstrate the implementation of each. | ||
|
||
In general the OpenAMP feature being exemplified is found in the `OpenAMP source repository <https://github.com/OpenAMP/open-amp/tree/main/apps/examples>`_ through a number of examples. Additional supporting code is located in the `OpenAMP System Reference examples <https://github.com/OpenAMP/openamp-system-reference/tree/main/examples>`_ | ||
|
||
.. toctree:: | ||
:maxdepth: 2 | ||
|
||
docker_images | ||
system_reference-AMD-Xilinx | ||
system_reference-ST | ||
inter-process |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In the echo test itself, the host does not load the remote firmware. it tests only rpmsg protocol with the remoteproc virtio transport. here is more a prerequiste
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The docker demo has demo1A script and which has echo image > /sys/class/remoteproc/remoteproc0/firmware, and then sends start to .../state. That is what this "Host Script" section is referring to, rather then the echo_test application itself.
Clarified by adding reference to demo1A of Demo Docker Images