This repository is the home for the Open Asymmetric Multi Processing (OpenAMP) framework project. The OpenAMP framework provides software components that enable development of software applications for Asymmetric Multiprocessing (AMP) systems. The framework provides the following key capabilities.
OpenAMP library libopen_amp is composed of the following directories in lib/:
OpenAMP system/machine support has been moved to libmetal.
Here are the libmetal APIs used by OpenAMP, if you want to port OpenAMP for your system, you will need to implement the following libmetal APIs in the libmetal's lib/system/<SYS> directory:
Please refer to lib/system/generic when you port libmetal for your system.
If you a different compiler to GNU gcc, please refer to lib/compiler/gcc/ to port libmetal for your compiler. At the moment, OpenAMP needs the atomic operations defined in lib/compiler/gcc/atomic.h.
OpenAMP uses CMake for library and demonstration application compilation. OpenAMP requires libmetal library. For now, you will need to download and compile libmetal library separately before you compiling OpenAMP library. In future, we will try to make libmetal as a submodule to OpenAMP to make this flow easier.
Some Cmake options are available to allow user to customize to the OpenAMP library for it project:
The Zephyr open-amp repo implements the open-amp library for the Zephyr project. It is mainly a fork of this repository, with some add-ons for integration in the Zephyr project. The standard way to compile OpenAMP for a Zephyr project is to use Zephyr build environment. Please refer to Zephyr OpenAMP samples for examples and Zephyr documentation for the build process.
OpenAMP project documentation is available at: https://openamp.readthedocs.io/en/latest/
As an open-source project, we welcome and encourage the community to submit patches directly to the project. As a contributor you should be familiar with common developer tools such as Git and CMake, and platforms such as GitHub. Then following points should be rescpected to facilitate the review process.
Code is contributed to the Linux kernel under a number of licenses, but all code must be compatible with version the BSD License, which is the license covering the OpenAMP distribution as a whole. In practice, use the following tag instead of the full license text in the individual files:
Commit message must contain Signed-off-by: line and your email must match the change authorship information. Make sure your .gitconfig is set up correctly:
When AI tools are used to contribute to the OpenAMP project, proper attribution helps track the evolving role of AI in the development process. Contributions should include an Assisted-by tag in the following format:
Assisted-by: AGENT_NAME:MODEL_VERSION [TOOL1] [TOOL2]
Where:
AGENT_NAME is the name of the AI tool or framework MODEL_VERSION is the specific model version used [TOOL1] [TOOL2] are optional specialized analysis tools used, for example, coccinelle, sparse, and smatch Basic development tools (git, gcc, make, editors) should not be listed.
Example: Assisted-by: Claude:claude-3-opus coccinelle sparse
Before you submit a pull request to the project, verify your commit messages meet the requirements. The check can be performed locally using the the gitlint command.
Run gitlint locally in your tree and branch where your patches have been committed:
Note, gitlint only checks HEAD (the most recent commit), so you should run it after each commit, or use the –commits option to specify a commit range covering all the development patches to be submitted.
In general, follow the Linux kernel coding style, with the following exceptions:
The Linux kernel GPL-licensed tool checkpatch is used to check coding style conformity.Checkpatch is available in the scripts directory.
To check your <n> commits in your git branch:
We use standard github mechanism for pull request. Please refer to github documentation for help.
Subscribe to the OpenAMP mailing list(opena.nosp@m.mp-r.nosp@m.p@lis.nosp@m.ts.o.nosp@m.penam.nosp@m.ppro.nosp@m.ject..nosp@m.org).
For more details on the framework please refer to the OpenAMP Docs.