Skip to content

Latest commit

 

History

History
74 lines (54 loc) · 4.02 KB

overview.rst

File metadata and controls

74 lines (54 loc) · 4.02 KB

Project Overview

OpenAMP Intro

OpenAMP is a community effort that is standardizing and implementing how multiple embedded environments interact with each other using AMP. It provides conventions and standards as well as an open source implementation to facilitate AMP development for embedded systems. Read more about Asymmentric Multiprocessing :ref:`here<asymmetric-multiprocessing-work-label>`.

The vision is that regardless of the operating environment/operating system, it should be possible to use identical interfaces to interact with other operating environments in the same system.

Furthermore, these operating environments can interoperate over a standardized protocol, making it possible to mix and match any two or more operating systems in the same device.

Read more about OpenAMP System Considerations :ref:`here<porting-guide-work-label>`.

To accomplish the above, OpenAMP is divided into the following efforts:

Operating Environments

OpenAMP is supported in various operating environments through an a) OpenAMP open source project (OAOS), b) a Linux kernel project (OALK), and c) multiple proprietary implementations (OAPI). The Linux kernel support (OALK) comes through the regular remoteproc/RPMsg/Virtio efforts in the kernel.

The operating environments that OpenAMP supports include:

  • Linux user space - OAOS
  • Linux kernel - OALK
  • Multiple RTOS's - OAOS/OAPI including Nucleus, FreeRTOS, uC/OS, VxWorks and more
  • Bare Metal (No OS) - OAOS
  • In OS's on top of hypervisors - OAOS/OAPI
  • Within hypervisors - OAPI

OpenAMP Capabilities

OpenAMP currently supports the following interactions between operating environments:

  • Lifecycle operations - Such as starting and stopping another environment
  • Messaging - Sending and receiving messages
  • Proxy operations - Remote access to systems services such as file system

Read more about the OpenAMP System Components :ref:`here<openamp-components-work-label>`.

In the future OpenAMP is envisioned to also encompass other areas important in a heterogeneous environment, such as power management and managing the lifecycle of non-CPU devices.

OpenAMP Guidelines

There are a few guiding principles that governs OpenAMP:

  • Provide a clean-room implementation of OpenAMP with business friendly APIs and licensing
    • Allow for compatible proprietary implementations and products
  • Base as much as possible on existing technologies/open source projects/standards
    • In particular remoteproc, RPMsg and virtio
  • Never standardize on anything unless there is an open source implementation that can prove it
  • Always be backwards compatible (unless there is a really, really good reason to change)
    • In particular make sure to be compatible with the Linux kernel implementation of remoteproc/RPMsg/virtio