From 56b73b7f4f9155b15e227c9a4617a4f70701a400 Mon Sep 17 00:00:00 2001 From: Wendy Liang Date: Thu, 31 Dec 2015 23:44:53 -0800 Subject: [PATCH] Update README for the OpenAMP Signed-off-by: Wendy Liang --- README.md | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 69 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 8497c0b..3910ba5 100644 --- 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 -- 2.39.2