Apps: Remove the need to have old Zynq includes
[processor-sdk/open-amp.git] / README.md
index 8497c0b99913c4f9c61a07bd556bd277314762f3..3910ba580e1b9a95dc30c55518d880a424a65927 100644 (file)
--- a/README.md
+++ b/README.md
@@ -1,5 +1,4 @@
-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
@@ -12,14 +11,79 @@ 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