* FRSH/FORB FRAMEWORK
FRSH/FORB is a contract-based resource reservation framework for
- distributed real-time applications. 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.
+ 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.
The development of the framework begun in FRESCOR project
(http://frescor.org) and now it is developed as a stand-alone
* BUILDING FRSH/FORB FRAMEWORK
-1) Initialize and download additional submodules:
-
- git submodule init
- git submodule update
+1) Install prerequisites. On Debian/Ubuntu:
+
+ apt-get install libidl-dev libcpufreq-dev libacpi-dev \
+ libcgroup-dev libncurses5-dev
-2) Until everything is converted to GIT, some pieces must be fetched
- from FRESCOR SVN:
+ To build camera demo, you need to:
- cd src
- ./update-svn
+ apt-get install freeglut3-dev
-3) Go to build directory and configure the build:
+2) Go to build directory and configure the build:
- cd ../build/aquosa
+ 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.
-4) Compile it:
+ 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:
+
+ ./_compiled/bin/fcb &
+ ./_compiled/bin/frm_dummy &
+ ./_compiled/bin/frm_gui &
+ ./_compiled/bin-tests/dummy_renegotiation
+
* DIRECTORY STRUCTURE
* build/* - configuration for different build targets
* src/fwp - Communication protocol and resource management for WiFi
(also works with Ethernet).
-* OLD HOWTO
-
- Linux + AQuoSA
-
- * 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)
-
- AQUOSA_ROOT=/path/to/aquosa/install/path
-
- * Actually, my preferred way of working is adding the following
- variables in .bashrc:
-
- # 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
-
- * Create default-configuration by running
-
- make default-config
-
- * Run
-
- make
+* OLD HOWTO - may be out of date
-Further remarks
+** Further remarks
- If we are not interested in compilation of some component (because
it is currently in uncompilable state), we can simply delete the
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
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: