<!--Couldn't selectively extract content, Imported Full Body :(-->
<div class="article" lang="en" xml:lang="en"><div class="titlepage"><div><div></div><div><h3 class="subtitle"><i><span class="emphasis"><em>Open RObot COntrol Software</em></span>
</i></h3></div><div><p class="pubdate">8 November 2006</p></div><div><div class="revhistory"><table border="1" width="100%" summary="Revision history"><tr><th align="left" valign="top" colspan="3"><b>Revision History</b></th></tr><tr><td align="left">Revision 0.1</td><td align="left">13 Jan 2005</td><td align="left">PS</td></tr><tr><td align="left" colspan="3">
Initial version.
</td></tr><tr><td align="left">Revision 0.2</td><td align="left">1 March 2005</td><td align="left">PS</td></tr><tr><td align="left" colspan="3">
Updated broken links and RTAI version info.
</td></tr><tr><td align="left">Revision 0.3</td><td align="left">1 May 2005</td><td align="left">PS</td></tr><tr><td align="left" colspan="3">
Added 'Testing Orocos' section.
</td></tr><tr><td align="left">Revision 0.4</td><td align="left">8 Nov 2006</td><td align="left">PS</td></tr><tr><td align="left" colspan="3">
Updated to Orocos 1.0
</td></tr><tr><td align="left">Revision 0.5</td><td align="left">17 Nov 2006</td><td align="left">PS</td></tr><tr><td align="left" colspan="3">
Fixed wrong links.
</td></tr></table></div></div><div><div class="abstract"><p class="title"><b>Abstract</b></p><p>
This document provides answers to frequently asked questions (faq) about
installing, configuration and usage of the Real-Time Toolkit.
</p></div></div></div><hr></hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="appendix"><a href="#id2529299">A. About Orocos</a></span></dt></dl></div><div class="qandaset"><dl><dt>1. <a href="#id2489142">General Questions</a></dt><dd><dl><dt>Q: <a href="#id2489148">What is Orocos - Real-Time Toolkit ?</a></dt><dt>Q: <a href="#id2489180">Where can a find a quick overview of what features the Real-Time Tookit currently has ?</a></dt><dt>Q: <a href="#id2489205">Where can I find the latest RTT documentation?</a></dt><dt>Q: <a href="#id2489237">Where can I find download and installation instructions?</a></dt><dt>Q: <a href="#id2488670">Where can I ask Orocos software related questions (even newbie questions) ?</a></dt><dt>Q: <a href="#id2488695">Where can I ask Orocos 'philosophical' questions ?</a></dt></dl></dd><dt>2. <a href="#id2488721">Configuring and Compiling <span class="acronym">Orocos</span> <span class="acronym">RTT</span></a></dt><dd><dl><dt>Q: <a href="#id2488733">Where can I find the latest configuration instructions?</a></dt><dt>Q: <a href="#id2488756">Which Linux version should I use?</a></dt><dt>Q: <a href="#id2488780">Which RTAI version should I use?</a></dt><dt>Q: <a href="#id2488806">How should I configure my Linux Kernel?</a></dt><dt>Q: <a href="#id2488877">How should I configure RTAI?</a></dt><dt>Q: <a href="#id2488926">How can I change which files get compiled in the RTT ?</a></dt><dt>Q: <a href="#id2481982">What are the system requirements of Orocos RTT?</a></dt></dl></dd><dt>3. <a href="#id2482020">Testing <span class="acronym">Orocos</span> <span class="acronym">RTT</span></a></dt><dd><dl><dt>Q: <a href="#id2482032">Where can I find a quick demo application ?</a></dt><dt>Q: <a href="#id2482058">Why doesn't the demo application compile ?</a></dt></dl></dd><dt>4. <a href="#id2482084">Runtime Problems/Crashes with <span class="acronym">Orocos</span> <span class="acronym">RTT</span></a></dt><dd><dl><dt>Q: <a href="#id2482102">The first message I get is 'Segmentation fault' !</a></dt></dl></dd><dt>5. <a href="#id2482160">Runtime Problems with RTAI/LXRT</a></dt><dd><dl><dt>Q: <a href="#id2482172">The first message I get is 'Segmentation fault' !</a></dt><dt>Q: <a href="#id2482209">Orocos RTT hangs after the first threads are created !</a></dt><dt>Q: <a href="#id2482236">The first message I get is 'LXRT NOT INITIALISED IN THIS THREAD pid=1234,
BUT TRIES TO INVOKE LXRT FUNCTION >>rtos_mutex_init<< ANYWAY'. What did
I do wrong ?</a></dt><dt>Q: <a href="#id2482276">The realtime performance is Terrible !</a></dt><dt>Q: <a href="#id2482318">make check crashes my (RTAI) system. What did I
do wrong ?</a></dt></dl></dd><dt>6. <a href="#id2482350"><span class="acronym">Orocos</span> <span class="acronym">RTT</span> Design Questions</a></dt><dd><dl><dt>Q: <a href="#id2482362">Does the RTT run on Embedded Systems ?</a></dt><dt>Q: <a href="#id2482428">Is the Orocos RTT Portable ?</a></dt><dt>Q: <a href="#id2482474">What future ports are most likely ?</a></dt><dt>Q: <a href="#id2482494">What is the overhead of all this C++, can it be
Realtime ?</a></dt></dl></dd></dl><table border="0" summary="Q and A Set"><col align="left" width="1%"></col><tbody><tr class="qandadiv"><td align="left" valign="top" colspan="2"><a id="id2489142"></a><h3 class="title"><a id="id2489142"></a>1. General Questions</h3></td></tr><tr class="toc" colspan="2"><td align="left" valign="top" colspan="2"><dl><dt>Q: <a href="#id2489148">What is Orocos - Real-Time Toolkit ?</a></dt><dt>Q: <a href="#id2489180">Where can a find a quick overview of what features the Real-Time Tookit currently has ?</a></dt><dt>Q: <a href="#id2489205">Where can I find the latest RTT documentation?</a></dt><dt>Q: <a href="#id2489237">Where can I find download and installation instructions?</a></dt><dt>Q: <a href="#id2488670">Where can I ask Orocos software related questions (even newbie questions) ?</a></dt><dt>Q: <a href="#id2488695">Where can I ask Orocos 'philosophical' questions ?</a></dt></dl></td></tr><tr class="question"><td align="left" valign="top"><a id="id2489148"></a><a id="id2489150"></a><b>Q:</b></td><td align="left" valign="top"><p>What is Orocos - Real-Time Toolkit ?</p></td></tr><tr class="answer"><td align="left" valign="top"><b>A:</b></td><td align="left" valign="top"><p>
Orocos stands for Open Robot Control Software and was a
EU funded project to write Free Software for robots. This faq is
about the Real-Time Toolkit
library for writing hard realtime control applications in
C++. It supports hard realtime <a href="http://www.rtai.org" target="_top">RTAI/LXRT</a> and <a href="http://www.xenomai.org" target="_top">Xenomai</a> and normal
GNU/Linux programs.</p></td></tr><tr class="question"><td align="left" valign="top"><a id="id2489180"></a><a id="id2489182"></a><b>Q:</b></td><td align="left" valign="top"><p>Where can a find a quick overview of what features the Real-Time Tookit currently has ?</p></td></tr><tr class="answer"><td align="left" valign="top"><b>A:</b></td><td align="left" valign="top"><p>
In the <a href="http://www.orocos.org/documents/OrocosIn3Slides.pdf" target="_top">Orocos in 3 slides Overview</a>
Presentation.
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="id2489205"></a><a id="id2489207"></a><b>Q:</b></td><td align="left" valign="top"><p>Where can I find the latest RTT documentation?</p></td></tr><tr class="answer"><td align="left" valign="top"><b>A:</b></td><td align="left" valign="top"><p>
In the <a href="http://www.orocos.org/rtt/manuals" target="_top">
Manuals Section </a> of the Orocos website,
you can find all online documents (and this FAQ). Also,
the <a href="http://www.orocos.org/rtt" target="_top"> RTT
Documentation Section </a> contains links to the manuals.
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="id2489237"></a><a id="id2489240"></a><b>Q:</b></td><td align="left" valign="top"><p>Where can I find download and installation instructions?</p></td></tr><tr class="answer"><td align="left" valign="top"><b>A:</b></td><td align="left" valign="top"><p>
In the <a href="http://www.orocos.org/rtt" target="_top"> RTT
Users Section</a> of the Orocos website and the
<a href="orocos-installation" target="_top">
Orocos Installation Manual</a>.</p></td></tr><tr class="question"><td align="left" valign="top"><a id="id2488670"></a><a id="id2488672"></a><b>Q:</b></td><td align="left" valign="top"><p>Where can I ask Orocos software related questions (even newbie questions) ?</p></td></tr><tr class="answer"><td align="left" valign="top"><b>A:</b></td><td align="left" valign="top"><p>
On the <a href="http://lists.mech.kuleuven.be/mailman/listinfo/orocos-dev" target="_top">
Orocos-dev mailinglist</a> (medium traffic).
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="id2488695"></a><a id="id2488697"></a><b>Q:</b></td><td align="left" valign="top"><p>Where can I ask Orocos 'philosophical' questions ?</p></td></tr><tr class="answer"><td align="left" valign="top"><b>A:</b></td><td align="left" valign="top"><p>
On the <a href="http://lists.mech.kuleuven.be/mailman/listinfo/orocos" target="_top">
Orocos mailinglist</a> ( low traffic ).
</p></td></tr><tr class="qandadiv"><td align="left" valign="top" colspan="2"><a id="id2488721"></a><h3 class="title"><a id="id2488721"></a>2. Configuring and Compiling <span class="acronym">Orocos</span> <span class="acronym">RTT</span></h3></td></tr><tr class="toc" colspan="2"><td align="left" valign="top" colspan="2"><dl><dt>Q: <a href="#id2488733">Where can I find the latest configuration instructions?</a></dt><dt>Q: <a href="#id2488756">Which Linux version should I use?</a></dt><dt>Q: <a href="#id2488780">Which RTAI version should I use?</a></dt><dt>Q: <a href="#id2488806">How should I configure my Linux Kernel?</a></dt><dt>Q: <a href="#id2488877">How should I configure RTAI?</a></dt><dt>Q: <a href="#id2488926">How can I change which files get compiled in the RTT ?</a></dt><dt>Q: <a href="#id2481982">What are the system requirements of Orocos RTT?</a></dt></dl></td></tr><tr class="question"><td align="left" valign="top"><a id="id2488733"></a><a id="id2488735"></a><b>Q:</b></td><td align="left" valign="top"><p>Where can I find the latest configuration instructions?</p></td></tr><tr class="answer"><td align="left" valign="top"><b>A:</b></td><td align="left" valign="top"><p>In the <a href="orocos-installation" target="_top">
Orocos RTT Installation Manual</a>. </p></td></tr><tr class="question"><td align="left" valign="top"><a id="id2488756"></a><a id="id2488759"></a><b>Q:</b></td><td align="left" valign="top"><p>Which Linux version should I use?</p></td></tr><tr class="answer"><td align="left" valign="top"><b>A:</b></td><td align="left" valign="top"><p>The RTT works with <a href="http://www.kernel.org" target="_top">
vanilla </a> Linux 2.4 and 2.6 kernels.</p></td></tr><tr class="question"><td align="left" valign="top"><a id="id2488780"></a><a id="id2488782"></a><b>Q:</b></td><td align="left" valign="top"><p>Which RTAI version should I use?</p></td></tr><tr class="answer"><td align="left" valign="top"><b>A:</b></td><td align="left" valign="top"><p>
The RTT works with RTAI 3.0r5 ( you need to apply a <a href="http://people.mech.kuleuven.ac.be/~psoetens/orocos/patches/rtai-3.0rx.patch" target="_top">patch</a> if you use 3.0r(1-4)
), RTAI 3.1, 3.2, 3.3 and 3.4 (no patching required).
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="id2488806"></a><a id="id2488808"></a><b>Q:</b></td><td align="left" valign="top"><p>How should I configure my Linux Kernel?</p></td></tr><tr class="answer"><td align="left" valign="top"><b>A:</b></td><td align="left" valign="top"><p>Disable anything that is remotely 'Experimental' or
not necessarily needed. The following Linux options must be
disabled to guarantee the most stable performance :
</p><div class="itemizedlist"><ul type="disc"><li><p>Disable APM / ACPI. These can interfere with scheduling and RTAI.</p></li><li><p>Disable MTRR. This can interfere when using RTAI.</p></li><li><p>Disable CONFIG_REGPARM. This option causes BIG problems when using LXRT,
and renders it completely unusable alltogether.</p></li></ul></div><p>
</p><p>The following Linux options must be enabled to guarantee
the most stable performance :
</p><div class="itemizedlist"><ul type="disc"><li><p>Enable your USB driver ( or disable USB in your BIOS ). The aim
of using a Linux USB driver is to disable the BIOS USB driver.</p></li><li><p>
Enable your IDE chipset and choose the correct CPU.
Wrong settings for one of these will cause lock-ups.
</p></li></ul></div><p>
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="id2488877"></a><a id="id2488880"></a><b>Q:</b></td><td align="left" valign="top"><p>How should I configure RTAI?</p></td></tr><tr class="answer"><td align="left" valign="top"><b>A:</b></td><td align="left" valign="top"><p>The following RTAI options must be enabled (and modules must be loaded) :
</p><div class="itemizedlist"><ul type="disc"><li><p>
LXRT scheduler (rtai_hal+rtai_lxrt)
</p></li><li><p>
Semaphores (rtai_sem)
</p></li><li><p>
FPU Support
</p></li><li><p>RealTime Memory Manager (with vmalloc)</p></li></ul></div><p>
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="id2488926"></a><a id="id2488928"></a><b>Q:</b></td><td align="left" valign="top"><p>How can I change which files get compiled in the RTT ?</p></td></tr><tr class="answer"><td align="left" valign="top"><b>A:</b></td><td align="left" valign="top"><p>
Use <span><strong class="command">make configure_packages</strong></span> in your build directory , which will
popup the configuration GUI. If you unload packages (see also Build->Packages...)
they will no longer be compiled (without removing them physically).
</p><p>
Use <span><strong class="command">make rtt-corba</strong></span> in your build directory to build
only the library for distributed components using Corba.
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="id2481982"></a><a id="id2481984"></a><b>Q:</b></td><td align="left" valign="top"><p>What are the system requirements of <span class="acronym">Orocos</span> <span class="acronym">RTT</span>?</p></td></tr><tr class="answer"><td align="left" valign="top"><b>A:</b></td><td align="left" valign="top"><p>
For compiling the RTT, you need a very fast machine with minimum 256MB RAM,
and 512MB RAM to be comfortable.
</p></td></tr><tr class="answer"><td align="left" valign="top"><b>A:</b></td><td align="left" valign="top"><p>
For running an Orocos application, you need an Intel Pentium-like Processor with minimum 32MB RAM,
but much depends on the application itself. Orocos has not been tested
on other (PowerPC, ARM,...) processors, but an FPU unit (or emulation) and
Compare-And-Swap processor instruction is surely needed. See also below.
</p></td></tr><tr class="qandadiv"><td align="left" valign="top" colspan="2"><a id="id2482020"></a><h3 class="title"><a id="id2482020"></a>3. Testing <span class="acronym">Orocos</span> <span class="acronym">RTT</span></h3></td></tr><tr class="toc" colspan="2"><td align="left" valign="top" colspan="2"><dl><dt>Q: <a href="#id2482032">Where can I find a quick demo application ?</a></dt><dt>Q: <a href="#id2482058">Why doesn't the demo application compile ?</a></dt></dl></td></tr><tr class="question"><td align="left" valign="top"><a id="id2482032"></a><a id="id2482034"></a><b>Q:</b></td><td align="left" valign="top"><p>Where can I find a quick demo application ?</p></td></tr><tr class="answer"><td align="left" valign="top"><b>A:</b></td><td align="left" valign="top"><p>
You can download the <a href="http://www.orocos.org/ocl" target="_top">Orocos Component Library
(OCL)</a>, install it and check out the examples you
can download on the Orocos RTT page as well.
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="id2482058"></a><a id="id2482060"></a><b>Q:</b></td><td align="left" valign="top"><p>Why doesn't the demo application compile ?</p></td></tr><tr class="answer"><td align="left" valign="top"><b>A:</b></td><td align="left" valign="top"><p>Did you read the README ? Did you install Orocos in /usr/local/orocos ?
Otherwise, set ORO_PATH to the correct location in the Makefile or
specify it in <span><strong class="command">make ORO_PATH=/path/to/install</strong></span>
</p></td></tr><tr class="qandadiv"><td align="left" valign="top" colspan="2"><a id="id2482084"></a><h3 class="title"><a id="id2482084"></a>4. Runtime Problems/Crashes with <span class="acronym">Orocos</span> <span class="acronym">RTT</span></h3></td></tr><tr class="toc" colspan="2"><td align="left" valign="top" colspan="2"><dl><dt>Q: <a href="#id2482102">The first message I get is 'Segmentation fault' !</a></dt></dl></td></tr><tr class="toc" colspan="2"><td align="left" valign="top" colspan="2"><p>
This section covers 'general' causes of crashes.
If you are using RTAI, also check out the next Section.
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="id2482102"></a><a id="id2482104"></a><b>Q:</b></td><td align="left" valign="top"><p>The first message I get is 'Segmentation fault' !</p></td></tr><tr class="answer"><td align="left" valign="top"><b>A:</b></td><td align="left" valign="top"><p>Maybe you are mixing C++ libraries or compiler versions.
In this case, the linker shows a warning, which most users ignore
though. In order to check if your libraries are correctly setup, do:
</p><pre class="screen">TeX Embedding failed! ldd core-test
linux-gate.so.1 => (0xffffe000)
libcppunit-1.10.so.2 => /usr/lib/libcppunit-1.10.so.2 (0xb7f54000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7f4f000)
libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb7f3c000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb7e56000)
libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb7e33000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb7e28000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7cfa000)
/lib/ld-linux.so.2 (0xb7fcc000)</pre><p> You should only see
<span class="emphasis"><em>one</em></span> libstdc++ library listed, thus if you see:
</p><pre class="screen"> ....
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb78a9000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb789e000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7770000)
libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0xb76b6000)
....</pre><p>
the double occurence of 'libstdc++' is the cause of the crash. </p><p>
Compile all your libraries (cppunit, orocos,...) with the
same compiler.
</p></td></tr><tr class="qandadiv"><td align="left" valign="top" colspan="2"><a id="id2482160"></a><h3 class="title"><a id="id2482160"></a>5. Runtime Problems with RTAI/LXRT</h3></td></tr><tr class="toc" colspan="2"><td align="left" valign="top" colspan="2"><dl><dt>Q: <a href="#id2482172">The first message I get is 'Segmentation fault' !</a></dt><dt>Q: <a href="#id2482209">Orocos RTT hangs after the first threads are created !</a></dt><dt>Q: <a href="#id2482236">The first message I get is 'LXRT NOT INITIALISED IN THIS THREAD pid=1234,
BUT TRIES TO INVOKE LXRT FUNCTION >>rtos_mutex_init<< ANYWAY'. What did
I do wrong ?</a></dt><dt>Q: <a href="#id2482276">The realtime performance is Terrible !</a></dt><dt>Q: <a href="#id2482318">make check crashes my (RTAI) system. What did I
do wrong ?</a></dt></dl></td></tr><tr class="toc" colspan="2"><td align="left" valign="top" colspan="2"><p>This section documents causes of crashes that only occur when you
run orocos for LXRT and disapear when you run the same program under GNU/Linux.
See also the section above.
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="id2482172"></a><a id="id2482174"></a><b>Q:</b></td><td align="left" valign="top"><p>The first message I get is 'Segmentation fault' !</p></td></tr><tr class="answer"><td align="left" valign="top"><b>A:</b></td><td align="left" valign="top"><p>Check if your rtai_lxrt and rtai_sem kernel modules are loaded <span class="emphasis"><em>and</em></span>
rtai_up is <span class="emphasis"><em>not</em></span> loaded.</p><p>
If that does not help, set </p><pre class="screen">export ORO_LOGLEVEL=6</pre><p> and
send the output to the Orocos-dev mailinglist.
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="id2482209"></a><a id="id2482211"></a><b>Q:</b></td><td align="left" valign="top"><p><span class="acronym">Orocos</span> <span class="acronym">RTT</span> hangs after the first threads are created !</p></td></tr><tr class="answer"><td align="left" valign="top"><b>A:</b></td><td align="left" valign="top"><p>Check if the LXRT userspace tests work. Orocos should be compiled
with the same compiler as RTAI and Linux. RTAI/LXRT is quite sensitive
about the choosen compiler. Problems have been reported with RedHat's
GCC 3.4 compiler for example.</p></td></tr><tr class="question"><td align="left" valign="top"><a id="id2482236"></a><a id="id2482238"></a><b>Q:</b></td><td align="left" valign="top"><p>The first message I get is 'LXRT NOT INITIALISED IN THIS THREAD pid=1234,
BUT TRIES TO INVOKE LXRT FUNCTION >>rtos_mutex_init<< ANYWAY'. What did
I do wrong ?</p></td></tr><tr class="answer"><td align="left" valign="top"><b>A:</b></td><td align="left" valign="top"><p>You tried to use RTAI's functions while RTAI was not yet initialised.
This happens if you use global objects which contain Mutexes. Examples
are Event and some DataObjects, Buffers and the Logger class.
The solution is not to use global objects, but use global pointers and
create the objects in ORO_main() with new.
</p></td></tr><tr class="answer"><td align="left" valign="top"><b>A:</b></td><td align="left" valign="top"><p>You did not put your program in the ORO_main()
function. ( see <a href="orocos-installation" target="_top">
The Installation Manual </a> )
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="id2482276"></a><a id="id2482278"></a><b>Q:</b></td><td align="left" valign="top"><p>The realtime performance is Terrible !</p></td></tr><tr class="answer"><td align="left" valign="top"><b>A:</b></td><td align="left" valign="top"><p>
Well, that is not a question really, but anyway...
Did you read the section about <a href="orocos-components-manual" target="_top"> Priority Inversions </a> in the RTT CoreLib Manual ?
</p></td></tr><tr class="answer"><td align="left" valign="top"><b>A:</b></td><td align="left" valign="top"><p>
Are you calling Linux system calls from a hard-realtime
thread ? See <a href="http://people.mech.kuleuven.be/~psoetens/lxrt/portingtolxrt.html" target="_top">
this document </a> for what you can and can't do
within hard-realtime LXRT tasks.
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="id2482318"></a><a id="id2482320"></a><b>Q:</b></td><td align="left" valign="top"><p><span><strong class="command">make check</strong></span> crashes my (RTAI) system. What did I
do wrong ?</p></td></tr><tr class="answer"><td align="left" valign="top"><b>A:</b></td><td align="left" valign="top"><p>
The RTT testcases test the system to its limits and may
crash RTAI if not properly configured. Especially RTAI 3.0
and older. Also, verify that the RTAI/LXRT (aka
'userspace') test programs work before blaming
Orocos. Choosing a different compiler ( GCC 3.3 ) and
<span class="emphasis"><em>not using -O3</em></span>, mostly solves that
problem.
</p></td></tr><tr class="qandadiv"><td align="left" valign="top" colspan="2"><a id="id2482350"></a><h3 class="title"><a id="id2482350"></a>6. <span class="acronym">Orocos</span> <span class="acronym">RTT</span> Design Questions</h3></td></tr><tr class="toc" colspan="2"><td align="left" valign="top" colspan="2"><dl><dt>Q: <a href="#id2482362">Does the RTT run on Embedded Systems ?</a></dt><dt>Q: <a href="#id2482428">Is the Orocos RTT Portable ?</a></dt><dt>Q: <a href="#id2482474">What future ports are most likely ?</a></dt><dt>Q: <a href="#id2482494">What is the overhead of all this C++, can it be
Realtime ?</a></dt></dl></td></tr><tr class="question"><td align="left" valign="top"><a id="id2482362"></a><a id="id2482364"></a><b>Q:</b></td><td align="left" valign="top"><p>Does the RTT run on Embedded Systems ?</p></td></tr><tr class="answer"><td align="left" valign="top"><b>A:</b></td><td align="left" valign="top"><p>
The RTT is targetted at 32bit or 64bit systems and can
run on systems with < 1MB of RAM (for code&data &
application code) although with reduced functionality.
</p><p>
The RTT has an 'Embedded Systems' flag which disables
C++ exceptions in order to save in terms of memory footprint.
However, this means that the 'Scripting' language of Orocos can
not be used.
</p><p>
The RTT contains tinyXML for parsing XML scripts on embedded
systems as well.
</p><p>
The RTT Logger can be disabled at compile time to save on memory footprint.
</p><p>
Various parts of the Execution Engine can be disabled
at compile time to save on memory footprint.
</p><p>
It can be cross compiled, although the build system is
<a href="orocos-installation" target="_top"> not
particularly targetted to that means</a>. Search the
<a href="http://lists.mech.kuleuven.be/mailman/listinfo/orocos-dev" target="_top">Orocos-dev mailing list</a> as well
for discussions.
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="id2482428"></a><a id="id2482430"></a><b>Q:</b></td><td align="left" valign="top"><p>Is the <span class="acronym">Orocos</span> <span class="acronym">RTT</span> Portable ?</p></td></tr><tr class="answer"><td align="left" valign="top"><b>A:</b></td><td align="left" valign="top"><p>The minimum requirements for running the RTT on a
different target are for the CPU : floating point unit (FPU)
or FPU emulation (will degrade performance),
compare-and-swap instruction ( CAS, cmpxch ), and is
targetted at 32 or 64 bit processors. The target Operating System
(OS) must support the GNU C/C++ compiler with the Standard
Template Library, periodic threads, semaphores and recursive
mutexes.</p><p>
The RTT has a very thin wrapper around the above OS functions in the 'OS'
package, this is the only place of the RTT you need to port, where the
'gnulinux' package is a good starting point if you intend to port to a
Posix compliant OS. See also
<a href="orocos-components-manual" target="_top">The OS Reference</a>.
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="id2482474"></a><a id="id2482476"></a><b>Q:</b></td><td align="left" valign="top"><p>What future ports are most likely ?</p></td></tr><tr class="answer"><td align="left" valign="top"><b>A:</b></td><td align="left" valign="top"><p>The eCos Operating System (and all its supported processors)
and the ACE library (and all its supported OS's). The Orocos developers
are very willing to assist you in porting the RTT to your Operating System.
</p></td></tr><tr class="question"><td align="left" valign="top"><a id="id2482494"></a><a id="id2482496"></a><b>Q:</b></td><td align="left" valign="top"><p>What is the overhead of all this C++, can it be
Realtime ?</p></td></tr><tr class="answer"><td align="left" valign="top"><b>A:</b></td><td align="left" valign="top"><p>
C++ is a fundamental pillar of Orocos' design. If you need to
be convinced that this actually works, take a look at
<a href="http://www.orocos.org/orocos/applications" target="_top">
Demonstration movies </a> , and read <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2002/n1396.pdf" target="_top">
a Technical Report on C++ Performance </a>, but
Google can point you to <a href="http://www.google.com/search?hl=en&ie=UTF-8&c2coff=1&q=C%2B%2B+Embedded+Real+time&spell=1" target="_top">
lots more documents</a>. We are still finding ways
to measure the overhead of using the RTT itself, and much
depends on the application, but the minimum system
requirements to run it are a Pentium-class processor with 32 MB
of RAM.
</p></td></tr></tbody></table></div><div class="appendix" lang="en" xml:lang="en"><h2 class="title" style="clear: both"><a id="id2529299"></a>A. About Orocos</h2><p>
Please send general, non technical, Orocos questions to <a href="mailto: orocos at lists.mech.kuleuven.be" target="_top">
orocos at lists.mech.kuleuven.be </a>.
</p><p>
These pages are maintained by <a href="http://www.orocos.org/orocos/whatis" target="_top">the Orocos
team</a>.
</p><p>
For questions related to the use of the Orocos Software, please consult these
web pages and the <a href="http://www.orocos.org/rtt" target="_top">Orocos RTT manuals</a>. If
that fails, the <a href="mailto: orocos-dev at lists.mech.kuleuven.be" target="_top">
orocos-dev at lists.mech.kuleuven.be </a> mailing list might help.
Please
send comments on these web pages and the development of Orocos to
our developer mailing list at <a href="orocos-dev at lists.mech.kuleuven.be" target="_top">
orocos-dev at lists.mech.kuleuven.be </a>. All of
our lists have <a href="http://lists.mech.kuleuven.be/mailman/listinfo/orocos" target="_top">public
archives</a> ( <a href="http://lists.mech.kuleuven.be/mailman/listinfo/orocos-dev" target="_top"> dev public
archive</a> ) .
</p><p>
Copyright (C) Peter Soetens, FMTC
</p><p>
Verbatim copying and distribution of this entire article is
permitted in any medium, provided this notice is preserved.
</p></div></div>