Menu

Tree [028470] master /
 History

HTTPS access


File Date Author Commit
 build 2013-11-13 Michal Sojka Michal Sojka [028470] Fix Makefile to work with new OMK
 doc 2011-01-28 Michal Sojka Michal Sojka [408a6d] Merge commit '6634567ea9da3e17137d52667bd4d1274...
 scripts 2011-01-28 Michal Sojka Michal Sojka [408a6d] Merge commit '6634567ea9da3e17137d52667bd4d1274...
 src 2013-11-13 Michal Sojka Michal Sojka [028470] Fix Makefile to work with new OMK
 .gitignore 2011-02-22 Michal Sojka Michal Sojka [e4ebc3] Git should ignore *~ everywhere
 README 2011-02-25 Michal Sojka Michal Sojka [b3653e] Update the main README

Read Me

* FRSH/FORB FRAMEWORK

  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.

  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).

* BUILDING FRSH/FORB FRAMEWORK

1) Install prerequisites. On Debian/Ubuntu:

     apt-get install libidl-dev libcpufreq-dev libacpi-dev \
   		     libcgroup-dev libncurses5-dev

   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))
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.