]> rtime.felk.cvut.cz Git - frescor/frsh-forb.git/blobdiff - README
forbrun: Comment out not passing test
[frescor/frsh-forb.git] / README
diff --git a/README b/README
index 24883b0cfc769a48301293a3505d9c0876e7c4bf..e2a0ee82d9ee8a1a0b1803d133f5d656d5780a56 100644 (file)
--- a/README
+++ b/README
@@ -1,99 +1,97 @@
-                      Building FRESCOR with OMK makesystem
+* FRSH/FORB FRAMEWORK
 
-Using OMK to compile FRESCOR
+  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.
 
-   OMK makesystem uses out of source compilation, which means that the same
-   sources can be compiled for multiple targets/architectures/operating
-   systems at the same time. Currently only compilation for MARTE and
-   Linux+AQuoSA is tested.
+  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).
 
-   For the following, we will assume that your sources are sored in
-   $HOME/frescor/src with this structure:
+* BUILDING FRSH/FORB FRAMEWORK
 
- frescor/src
- |-- omk-build
- |   |-- aquosa
- |   `-- marte
- |-- dtm
- |-- fna
- |-- fosa
- |-- frsh
- |-- frta
- `-- utils
+1) Install prerequisites. On Debian/Ubuntu:
 
-  Quick start
+     apt-get install libidl-dev libcpufreq-dev libacpi-dev \
+                    libcgroup-dev libncurses5-dev
 
-    Marte OS
+   To build camera demo, you need to:
 
-     * Install Marte (we use version 1.7)
+     apt-get install freeglut3-dev
 
-       cd $HOME/frescor/src/omk-build/marte
+2) Go to build directory and configure the build:
+   
+   cd build/aquosa
+   make default-config
 
-     * Create config.omk containing
+   If you are not satisfied with configuration found in
+   config.omk-default or config.target, you can override it in
+   config.omk.
 
-       MARTE_PATH=/path/to/marte/
+   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.
 
-     * Create symbolic links to components you want to compile. Either
-       manually or simply by using a provided script:
+3) Compile it:
 
-       ./create-links
+   make
 
-     * Create default-configuration by running
+4) Test it:
 
-       make default-config
+   ./_compiled/bin/fcb &
+   ./_compiled/bin/frm_dummy &
+   ./_compiled/bin/frm_gui &
+   ./_compiled/bin-tests/dummy_renegotiation
 
-     * Run
+* DIRECTORY STRUCTURE
 
-       make
+  * build/* - configuration for different build targets
 
-    Linux + AQuoSA
+  * build/aquosa - default build for linux
 
-     * Install AQuoSA (http://aquosa.sourceforge.net)
-     * $HOME/frescor/src/omk-build/aquosa
-     * Adjust symlinks to FRESCOR modules (fosa, frsh, utils, ...) or use ./create-links script
-     * Create config.omk containing (or use a shell variable in your .bashrc)
+  * build/marte - build for MarteOS. Not completely supported now.
 
-  AQUOSA_ROOT=/path/to/aquosa/install/path
+  * src - all sources
 
-     * Actually, my preferred way of working is adding the following
-       variables in .bashrc:
+  * src/forb - CORBA-like middle for interprocess and inter-node
+    communication.
 
-  # AQuoSA environment
-  export AQUOSA_ROOT=/usr/local/aquosa
-  export PATH="$PATH:$AQUOSA_ROOT/bin"
-  export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$AQUOSA_ROOT/lib"
-  # FRESCOR environment
-  export PLATFORM=AQuoSA
-  export FOSA_ROOT=$HOME/path/to/fosa
-  export FRSH_ROOT=$HOME/path/to/frsh
-  export UTILS_ROOT=$HOME/path/to/utils
-  LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$FOSA_ROOT/lib:$FRSH_ROOT/lib:$UTILS_ROOT/lib"
-  # OMK environment
-  # Use `omk' for OMK-enabled sources
-  alias omk="make -f $HOME/path/to/Makefile.rules"
-  # link headers instead of copying them
-  export LN_HEADERS=y
+  * src/frsh - The core of resource reservation framework.
 
-     * Create default-configuration by running
+  * src/frsh-include - FRSH API headers from FRESCOR project. Our FRSH
+    framework implements this API.
 
-  make default-config
+  * src/fosa - Operating system adaptation layer
 
-     * Run
+  * src/ulut - library providing generic data types and algorithms
+    (AVL trees etc.).
 
-  make
+  * src/fna - Network adaptation layer = unified API for plugging in
+    different network protocols.
 
-Further remarks
+  * src/fwp - Communication protocol and resource management for WiFi
+    (also works with Ethernet).
 
-* If we are not interested in compilation of some component (because
+* OLD HOWTO - may be out of date
+
+** Further remarks
+
+- If we are not interested in compilation of some component (because
   it is currently in uncompilable state), we can simply delete the
   link to it.
 
-* It might be possible that you will need to change some configuration
+- 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. For example, if you have MARTE installed in a
   different directory that the one specified in config.target, you can
@@ -101,14 +99,14 @@ Further remarks
 
   MARTE_PATH=/path/to/marte/
 
-* To compile the FRESCOR for Marte, it is not necessary to set PATH
+- To compile the FRESCOR for Marte, it is not necessary to set PATH
   variable to GNAT compiler since OMK uses full paths to call the
   compiler.
 
-* Since there are many things in uncompilable state, you may want to
+- Since there are many things in uncompilable state, you may want to
   use `make -k' to ignore compilation errors.
 
-* Since we don't want to modify the original Makefiles, in order to
+- Since we don't want to modify the original Makefiles, 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 defining the following
@@ -116,7 +114,7 @@ Further remarks
 
   alias omk="make -f $HOME/frescor/src/omk-build/marte/Makefile.rules"
 
-Why is OMK good for FRESCOR
+** Why is OMK good for FRESCOR
 
      * It is not easy to test FRESCOR simultaneously on multiple platforms.
        With OMK, you can have the same sources compiled for multiple
@@ -145,15 +143,15 @@ Why is OMK good for FRESCOR
        it can be used to compile for OSE. In Pisa, they already use OMK for
        Aquosa.
 
-FAQ
+** FAQ
 
-   How do I debug my Makefile.omk set-up ?
+- How do I debug my Makefile.omk set-up ?
 
    Just activate verbose compilation (V=1 or V=2):
 
   make -f /path/to/Makefile.rules binary-pass V=1
 
-   How do I get back syntax highlighting in Emacs while editing .omk files ?
+- How do I get back syntax highlighting in Emacs while editing .omk files ?
 
    Just add these lines to your $(HOME)/.emacs: