diff --git a/README.md b/README.md
index 8497c0b99913c4f9c61a07bd556bd277314762f3..3910ba580e1b9a95dc30c55518d880a424a65927 100644 (file)
--- a/README.md
+++ b/README.md
-open-amp
-========
+# open-amp
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
environments
3. Compatibility with upstream Linux remoteproc and rpmsg components
4. Following AMP configurations supported
- a. Linux master/Baremetal remote
- b. Baremetal master/Linux remote
+ a. Linux master/Generic(Baremetal) remote
+ b. Generic(Baremetal) master/Linux remote
5. Proxy infrastructure and supplied demos showcase ability of proxy on master
to handle printf, scanf, open, close, read, write calls from Bare metal
based remote contexts.
-Following are the known limitations:
+## OpenAMP Source Structure
+```
+|- lib/
+| |- common/ # common helper functions
+| |- virtio/ # virtio implemnetation
+| |- rpmsg/ # rpmsg implementation
+| |- remoteproc/ # remoteproc implementation
+| | |- drivers # remoteproc drivers
+| |- proxy/ # implement one processor access device on the
+| | # other processor with file operations
+| |- system/ # os specific implementation
+| | | |- generic/ # E.g. generic system (that is baremetal)
+| | | | |- machine/ # machine specific implmentation for the system
+| |- include/ # header files
+| | |- machine/ # machine specific header files
+| | |- system/ # system specific header files
+|- apps/ # demontrastion/testing applicaitons
+| |- machine/ # common files for machine can be shared by applications
+| # It is up to each app to decide whether to use these files.
+| |- system/ # common files for system can be shared by applicaitons
+| # It is up to each app to decide whether to use these files.
+|- obsolete # It is used to build libs which may also required when
+| # building the apps. It will be removed in future since
+| # user can specify which libs to use when compiling the apps.
+|- cmake # CMake files
+```
+OpenAMP library libopen_amp is composed of the following directorys in `lib/`:
+* `common/`
+* `virtio/`
+* `rpmsg/`
+* `remoteproc/`
+* `proxy/`
+* `system/`
+
+## OpenAMP Compilation
+OpenAMP uses CMake for library and demonstration applicaiton compilation.
+
+### Example to compile Zynq MP SoC R5 generic(baremetal) remote:
+```
+$ mkdir build
+$ cd build/
+$ cmake ../open-amp -DCMAKE_TOOLCHAIN_FILE=zynqmp_r5_generic -DWITH_OBSOLETE=ON -DWITH_APPS=ON
+$ make DESTDIR=$(pwd) install
+```
+The OpenAMP library will be generated to `build/usr/local/lib` directory, headers will be generated to
+`build/usr/local/include` directory, and the applications executables will be generated to
+`build/usr/local/bin` directory.
+
+* `-DWITH_OBSOLETE=ON` is to build the `libxil.a`.
+* `-DWITH_APPS=ON` is to build the demonstration applications.
+
+### Example to compile Zynq A9 remote:
+```
+$ mkdir build
+$ cd build/
+$ cmake ../open-amp -DCMAKE_TOOLCHAIN_FILE=zynq7_generic -DWITH_OBSOLETE=on -DWITH_APPS=ON
+$ make DESTDIR=$(pwd) install
+```
+
+## Supported System and Machines
+For now, it supports:
+* Zynq generic slave
+* Zynq generic master
+* ZynqMP R5 generic slave
+
+## Known Limitations:
1. In rpc_demo.c(the remote demonstration application that showcases usage of
rpmsg retargetting infrastructure), the bindings for the flag input
parameter in open() system call has been redefined. The GCC tool library