X-Git-Url: https://rtime.felk.cvut.cz/gitweb/frescor/frsh-forb.git/blobdiff_plain/1c09e96694339327cb13b33fb2f8b428e6a3cd28..HEAD:/README diff --git a/README b/README index f6969c04..986058f0 100644 --- a/README +++ b/README @@ -1,22 +1,150 @@ -Compilation -=========== +* FRSH/FORB FRAMEWORK -1. Download FRESCOR SVN repositories fosa and omk-build + FRSH/FORB is a contract-based resource reservation framework for + distributed real-time applications. In general, it provides timing + isolation between applications, i.e. multiple applications can use + the same resources such as CPU, networks, etc., without influencing + timing of the other applications. The main principle is that + application developers use FRSH API to specify their resource + requirements needed to achieve desired timeliness and the framework + uses schedulability analysis to check these requirements. If the + check is successful an application is granted a "virtual resource" + which allow the application to use the requested resource while + enforcing the application not to use more than requested. -2. Download ulut (from - http://sourceforge.net/project/showfiles.php?group_id=118937&package_id=130840) + The development of the framework begun in FRESCOR project + (http://frescor.org) and now it is developed as a stand-alone + project on SourceForge (http://frsh-forb.sf.net). -3. Create symbolic links to forb, fosa and ulut sources inside - omk-build/aquosa: +* BUILDING FRSH/FORB FRAMEWORK - cd omk-build/aquosa - ln -s some-path/fosa . - ln -s some-path/ulut . - ln -s path-to-this-directory/forb . +1) Install prerequisites. On Debian/Ubuntu: -3. Configure the sources: - make default-config + apt-get install libidl-dev libcpufreq-dev libacpi-dev \ + libcgroup-dev libncurses5-dev -5. Compile it: - make - + To build camera demo, you need to: + + apt-get install freeglut3-dev + +2) Go to build directory and configure the build: + + cd build/aquosa + make default-config + + If you are not satisfied with configuration found in + config.omk-default or config.target, you can override it in + config.omk. + + To be able to use CPU reservations AQuoSA + (http://aquosa.sourceforge.net) has to be installed. If you cannot + use AQuoSA, the framework can also be compiled without CPU support + (echo CONFIG_AQUOSA=n >> config.omk) or can use cgroups (echo + CONFIG_CPUCG=y >> config.omk). Note, that cgroups support is not + well tested, but we plan to work on it. + +3) Compile it: + + make + +4) Test it: + + make test + +* DIRECTORY STRUCTURE + + * build/* - configuration for different build targets + + * build/aquosa - default build for linux + + * build/marte - build for MarteOS. Not completely supported now. + + * src - all sources + + * src/forb - CORBA-like middle for interprocess and inter-node + communication. + + * src/frsh - The core of resource reservation framework. + + * src/frsh-include - FRSH API headers from FRESCOR project. Our FRSH + framework implements this API. + + * src/fosa - Operating system adaptation layer + + * src/ulut - library providing generic data types and algorithms + (AVL trees etc.). + + * src/fna - Network adaptation layer = unified API for plugging in + different network protocols. + + * src/fwp - Communication protocol and resource management for WiFi + (also works with Ethernet). + +* MISCELLANEOUS + +** Advantages of OMK make system + + * It is not easy to test FRSH/FORB simultaneously on multiple + platforms. With OMK, you can have the same sources compiled for + multiple platforms/targets at the same time because it uses out + of source directory compilation. + * Automatic handling of dependencies. When a file is changed, + only the files dependent on it are rebuilt. Developers don't + have to care about this. + * With OMK it is easy to combine multiple components/libraries (from + different developers) together and compile them with the same + configuration (e.g. PLATFORM variable). The structure of leaf + makefiles (Makefile for every component) is very simple and *well + specified*. Because of this it is easy to combine components from + multiple developers. + * OMK already supports compilation for user-space + programs/libraries, Linux and RTLinux modules, RTEMS and + several other platforms. Now we have also added support for + Marte. OMK works under MinGW and Cygwin, so it can be used to + compile for OSE. In Pisa, they already use OMK for Aquosa. + +** Further remarks + +- If you are not interested in compilation of some component (e.g . + because it is currently in uncompilable state), you can simply + delete the link to it. + +- It might be possible that you will need to change some configuration + value from config.target. You can override any variable declared + there in config.omk - just create it and put variable definitions to + it. For example, if you have MARTE installed in a different + directory that the one specified in config.target, you can put the + following in config.omk: + + MARTE_PATH=/path/to/marte/ + +- FRSH/FORB support for Marte OS is not maintained. However, if you + want to try it, it is not necessary to set PATH variable to GNAT + compiler since OMK uses full paths to call the compiler. + +- Since we don't want to modify the Makefiles developed for Marte OS, + in order to compile only a part of the tree, you cannot simply run + make in the desired directory, but you have to specify -f flag with + the path to Makefile.rules. For this reason, we recommend using omk + script instead of make. The script can be obtained from + http://rtime.felk.cvut.cz/gitweb/omk.git/blob_plain/HEAD:/omk. + +** FAQ + +- How do I debug my Makefile.omk set-up ? + + Just activate verbose compilation (V=1 or V=2): + + make V=1 + + or + + make -f /path/to/Makefile.rules binary-pass V=1 + +- How do I get back syntax highlighting in Emacs while editing .omk files ? + + Just add these lines to your $(HOME)/.emacs: + + (setq auto-mode-alist + (append '(("\.omk$" . makefile-mode)) + auto-mode-alist))