diff --git a/openamp/overview.rst b/openamp/overview.rst index 495c299..e73da8c 100644 --- a/openamp/overview.rst +++ b/openamp/overview.rst @@ -34,10 +34,10 @@ History Texas Instruments’ remoteproc and RPMsg infrastructure available in the upstream Linux kernel enable the Linux applications running on a host processor to manage the life cycle of -remote processor/firmware and perform IPC with them. However, there was no open- source +remote processor/firmware and perform IPC with them. However, there was no open source API/software available that provided similar functionality and interfaces for other possible -software contexts (RTOS- or bare metal-based applications) running on the remote processor to -communicate with the Linux host. Also, AMP applications may require RTOS- or bare metal-based +software contexts (RTOS or bare metal-based applications) running on the remote processor to +communicate with the Linux host. Also, AMP applications may require RTOS or bare metal-based applications to run on the host processor and be able to manage and communicate with various software environments (RTOS, bare metal, or even Linux) on the remote processor. @@ -47,27 +47,32 @@ upstream Linux kernel. As in upstream Linux, the OpenAMP Framework's remoteproc infrastructure uses virtio as the transport layer/abstraction. +.. _project-aims: + ************ Project Aims ************ -To provide a solution to cover the :ref:`AMP Fundamentals`, the -OpenAMP project is divided into the following efforts: +The `OpenAMP Project `_ is primarily focused on these efforts: + +- "seeks to standardize the interactions between operating environments in a heterogeneous embedded + system through open source solutions for Asymmetric MultiProcessing (AMP)" + [`1 `_]. - * A guidance group under Linaro Community Projects - - Provides guidance for the low-level protocol that allows systems to interact (:ref:`more info here`) - + Built on top of the `Virtio Open Standard `_ - - Maintaining common user level APIs that allow applications to be portable - + :ref:`RPMSG` - + :ref:`remoteproc` - - **Provide low-level** :ref:`OS/HW abstraction layer` APIs **that - abstracts the open source implementation from the underlying OS and hardware, simplifying - the porting to new environments** +- "providing a clean-room open source implementation of the above standards" + [`2 `_]. - * An open source project that implements a clean-room implementation of OpenAMP - - Runs in :ref:`multiple environments` - - BSD License +- providing a set of reference integrations into several common operating environments on + multiple vendor platforms [`3 `_]. +The project components are "Based on the existing open source implementations of RemoteProc, +RPMsg, Virtio and Device tree, it covers aspects such as lifecycle operations, messaging, +low level abstractions" +[`2 `_]. + +The following :ref:`OpenAMP Fundamentals` section delves deeper +into the components which, implemented in the OpenAMP libraries, provide for agnostic +implementations for differing :ref:`Operating Environments`. .. _openamp-fundamentals-work-label: @@ -270,24 +275,25 @@ Read more about the OpenAMP System Components :ref:`here`_, - - an OpenAMP Linux Kernel project, coming through the regular - `remoteproc `_/ - `RPMsg `_/ - `Virtio `_ efforts in the kernel. - - multiple proprietary implementations. +The OpenAMP project aims to provide components which are portable and environment agnostic. -The operating environments that OpenAMP supports include: +This is achieved through the OpenAMP library which: - - Linux user space - - Linux kernel - - Multiple RTOS's - including `FreeRTOS `_, `NuttX `_, `Zephyr `_, `VxWorks `_, and more - - Bare Metal (No OS) - - In OS's on top of hypervisors - - Within hypervisors + - implements the Virtio and RPMsg protocols with associated API + (`See OpenAMP repository `_) + - works on different system thanks to the `libmetal `_ + adaptation layer: + - Bare Metal (No OS) + - Multiple RTOS's, including `FreeRTOS `_, + `NuttX `_, `Zephyr `_, + `VxWorks `_, and more + - OS's on top of hypervisors + - Within hypervisors + - is compatible with different compilers such as gcc, clang, armcc and more + - maintains compatibility with the Linux kernel by leveraging the following frameworks: + `remoteproc `_, + `RPMsg `_ and + `Virtio `_ frameworks. .. _governance-work-label: @@ -299,7 +305,7 @@ OpenAMP Governance and Guidelines The OpenAMP Project governance is detailed on the `OpenAMP Project Page `_. -There are a few guiding principles that governs OpenAMP: +There are a few guiding principles, based on the :ref:`project aims` that govern OpenAMP: - Provide a clean-room implementation of OpenAMP with business friendly APIs and licensing * Allow for compatible proprietary implementations and products