Apps: Remove the need to have old Zynq includes
[processor-sdk/open-amp.git] / README.md
index f57cda2ef90dd070fc49bd0dca46f1fcc9d1c756..3910ba580e1b9a95dc30c55518d880a424a65927 100644 (file)
--- a/README.md
+++ b/README.md
@@ -1,2 +1,95 @@
-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
+(AMP) systems. The framework provides the following key capabilities.
+
+1. Provides Life Cycle Management, and Inter Processor Communication
+   capabilities for management of remote compute resources and their associated
+   software contexts
+2. Provides a stand alone library usable with RTOS and Baremetal software
+   environments
+3. Compatibility with upstream Linux remoteproc and rpmsg components
+4. Following AMP configurations supported
+       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.
+
+## 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
+   bindings for this input argument is different between arm-xilinx/none-eabi, and
+   arm-linux-eabi toolchains. For this reason, redefinition is required for
+   compatibility with proxy on Linux master.
+
+For using the framework please refer to the documents present in the /docs folder.
+Subscribe to the open-amp mailing list at https://groups.google.com/group/open-amp.