Update README for the OpenAMP
[processor-sdk/open-amp.git] / README.md
1 # open-amp
2 This repository is the home for the Open Asymmetric Multi Processing (OpenAMP)
3 framework project. The OpenAMP framework provides software components that
4 enable development of software applications for Asymmetric Multiprocessing
5 (AMP) systems. The framework provides the following key capabilities.
7 1. Provides Life Cycle Management, and Inter Processor Communication
8    capabilities for management of remote compute resources and their associated
9    software contexts
10 2. Provides a stand alone library usable with RTOS and Baremetal software
11    environments
12 3. Compatibility with upstream Linux remoteproc and rpmsg components
13 4. Following AMP configurations supported
14         a. Linux master/Generic(Baremetal) remote
15         b. Generic(Baremetal) master/Linux remote
16 5. Proxy infrastructure and supplied demos showcase ability of proxy on master
17    to handle printf, scanf, open, close, read, write calls from Bare metal
18    based remote contexts.
20 ## OpenAMP Source Structure
21 ```
22 |- lib/
23 |  |- common/     # common helper functions
24 |  |- virtio/     # virtio implemnetation
25 |  |- rpmsg/      # rpmsg implementation
26 |  |- remoteproc/ # remoteproc implementation
27 |  |  |- drivers  # remoteproc drivers
28 |  |- proxy/      # implement one processor access device on the
29 |  |              # other processor with file operations
30 |  |- system/     # os specific implementation
31 |  |  |  |- generic/ # E.g. generic system (that is baremetal)
32 |  |  |  |  |- machine/ # machine specific implmentation for the system
33 |  |- include/     # header files
34 |  |  |- machine/ # machine specific header files
35 |  |  |- system/  # system specific header files
36 |- apps/        # demontrastion/testing applicaitons
37 |  |- machine/  # common files for machine can be shared by applications
38 |               # It is up to each app to decide whether to use these files.
39 |  |- system/   # common files for system can be shared by applicaitons
40 |               # It is up to each app to decide whether to use these files.
41 |- obsolete     # It is used to build libs which may also required when
42 |               # building the apps. It will be removed in future since
43 |               # user can specify which libs to use when compiling the apps.
44 |- cmake        # CMake files
45 ```
47 OpenAMP library libopen_amp is composed of the following directorys in `lib/`:
48 *   `common/`
49 *   `virtio/`
50 *   `rpmsg/`
51 *   `remoteproc/`
52 *   `proxy/`
53 *   `system/`
55 ## OpenAMP Compilation
56 OpenAMP uses CMake for library and demonstration applicaiton compilation.
58 ###  Example to compile Zynq MP SoC R5 generic(baremetal) remote:
59 ```
60 $ mkdir build
61 $ cd build/
62 $ cmake ../open-amp -DCMAKE_TOOLCHAIN_FILE=zynqmp_r5_generic -DWITH_OBSOLETE=ON -DWITH_APPS=ON
63 $ make DESTDIR=$(pwd) install
64 ```
65 The OpenAMP library will be generated to `build/usr/local/lib` directory, headers will be generated to
66 `build/usr/local/include` directory, and the applications executables will be generated to
67 `build/usr/local/bin` directory.
69 *   `-DWITH_OBSOLETE=ON` is to build the `libxil.a`.
70 *   `-DWITH_APPS=ON` is to build the demonstration applications.
72 ###  Example to compile Zynq A9 remote:
73 ```
74 $ mkdir build
75 $ cd build/
76 $ cmake ../open-amp -DCMAKE_TOOLCHAIN_FILE=zynq7_generic -DWITH_OBSOLETE=on -DWITH_APPS=ON
77 $ make DESTDIR=$(pwd) install
78 ```
80 ## Supported System and Machines
81 For now, it supports:
82 * Zynq generic slave
83 * Zynq generic master
84 * ZynqMP R5 generic slave
86 ## Known Limitations:
87 1. In rpc_demo.c(the remote demonstration application that showcases usage of
88    rpmsg retargetting infrastructure),  the bindings for the flag input
89    parameter in open() system call has been redefined. The GCC tool library
90    bindings for this input argument is different between arm-xilinx/none-eabi, and
91    arm-linux-eabi toolchains. For this reason, redefinition is required for
92    compatibility with proxy on Linux master.
94 For using the framework please refer to the documents present in the /docs folder.
95 Subscribe to the open-amp mailing list at https://groups.google.com/group/open-amp.