Orocos on Virtex-4 FPGA

Hello everyone,

in our research group we are planning to run Orocos applications on the
PowerPC embedded in Virtex-4 FPGA. I think that some Orocos users has
already done this (Peter, Klass?). I have some general questions about that:

A) Does Orocos actually support the PowerPC architecture (PPC405) on the
Virtex-4 FPGA?

B) Do you suggest a particular Linux flavour? I found many open source
(EDLK, PTXdist) and commercial (MontaVista Linux, TimeSys Linux, Wind River
Linux) options. Is there a real advantage to use a commercial "real-time"
Linux?

C) Is there any documentation about running Orocos on FPGA?

D) Does anyone is sufficiently expert in Orocos on FPGA to provide a quick
start training?

Thank you!

Philippe

Orocos on Virtex-4 FPGA

On Fri, Nov 6, 2009 at 4:08 PM, Philippe Hamelin
<philippe [dot] hamelin [..] ...> wrote:
> Hello everyone,
>
> in our research group we are planning to run Orocos applications on the
> PowerPC embedded in Virtex-4 FPGA. I think that some Orocos users has
> already done this (Peter, Klass?). I have some general questions about that:

Actually it was Steven (Kauffmann) and his thesis partner that did
most of the work.

> A) Does Orocos actually support the PowerPC architecture (PPC405) on the
> Virtex-4 FPGA?

We ran orocos on a Virtex II Pro (which is ppc405)

> B) Do you suggest a particular Linux flavour? I found many open source
> (EDLK, PTXdist) and commercial (MontaVista Linux, TimeSys Linux, Wind River
> Linux) options. Is there a real advantage to use a commercial "real-time"
> Linux?

Although in dutch, you will probably fetch the necessary info from
<http://users.telenet.be/steven.kauffmann/installation/index.htm>

> C) Is there any documentation about running Orocos on FPGA?

No more than the above pages I'm afraid.

> D) Does anyone is sufficiently expert in Orocos on FPGA to provide a quick
> start training?

Well, as long as you remain on the hardcore, things are not so FPGA
specific, and it's rather a matter of orocos on ppc...
With respect to real HW/SW codesign based on the orocos/xenomai/rtdm
combo, Steven is the most appropriate one I guess.

Klaas

Orocos on Virtex-4 FPGA

2009/11/6 Sagar Behere <sagar [dot] behere [..] ...>

> Philippe Hamelin wrote:
>
> A) Does Orocos actually support the PowerPC architecture (PPC405) on the
>> Virtex-4 FPGA?
>>
>
> It does. I have run Orocos on a Virtex-4, albeit the gnulinux target.
>
>
Great!

>
> B) Do you suggest a particular Linux flavour? I found many open source
>> (EDLK, PTXdist) and commercial (MontaVista Linux, TimeSys Linux, Wind River
>> Linux) options. Is there a real advantage to use a commercial "real-time"
>> Linux?
>>
>
> We are currently using the ELDK version with Xenomai. Next week, I intend
> to compile Orocos for the Xenomai target. If there is a ready-to-run
> benchmark program you know of, I can test it on the board and tell you the
> results.
>
>
ELDK seems the open source solution which most commonly used in Virtex-4. I
don't know why someone would pay thousands of dollars for MontaVista?

>
> C) Is there any documentation about running Orocos on FPGA?
>>
>
> IMHO, the most time consuming part is cross-compiling all the orocos
> dependencies for the ppc405 platform. Apart from that, the procedure for
> running orocos on the board is no different from running it on a normal PC.
>
>
Cross-compiling Boost and ACE+TAO is the thing I fear most. Was it hard?

> D) Does anyone is sufficiently expert in Orocos on FPGA to provide a quick
>> start training?
>>
>
> I am no expert on anything, but I've spent quite a lot of time pottering
> about to make things work. So feel to ask and I'll answer if I can.
>
>
Thank you!

> Regards,
> Sagar
>
>

Orocos on Virtex-4 FPGA

So I just finished cross-compiling the latest stable orocos-rtt (1.10),
orocos-ocl and orocos-bfl for the Virtex 4 (ppc_4xx ).

Here is a report. (I'm somewhat of a newbie, so what failed for me might
work for you.)

Philippe Hamelin wrote:

> Cross-compiling Boost and ACE+TAO is the thing I fear most. Was it hard?

I didn't enable CORBA.
Cross compiling boost involves black-magic. This link helps a lot:
http://goodliffe.blogspot.com/2008/05/cross-compiling-boost.html

Back when I had tried it before, I had used boost 1_34_1. Now, I tried
cross-compiling both boost 1_39 as well as boost 1_40. Although I had
partial success, it wasn't good enough for Orocos because I was unable
to successfully cross-compile the libboost_thread-mt library. I
eventually gave up and decided to try compiling with my earlier 1_34_1
version of boost.

cppunit cross-compiles without problems.

I was unable to cross-compile Xerces. But the docs say that in that case
a native parser is used.

Next, when I tried to compile RTT, cmake seemed to insist that xerces
was present, but when it tried to link, it couldn't find it (because a
cross compiled version of xerces was in reality, absent). It was finding
the version of xerces present on the laptop I was using to cross-compile
( an AMD64 version). So I simply did

apt-get remove libxerces-c2-dev

then compiled orocos-rtt again and this time it didn't find xerces and
used the TinyMarshaller.

Building the tests fails because boost 1_34 seems to lack a library with
the word "intrusive" in its name (sorry for being so vague, I'm typing
from memory). So I simply disabled the building of tests. (On my local
amd64 machine, I had resolved this problem by installing boost-1.40 from
the ubuntu repositories.)

After all this, orocos-rtt compiled.

orocos-ocl and bfl cross-compile without issues.

After this I reinstalled the libxerces-c2-dev on my local system.

If you wish to have the cross compiled version of boost 1_34_1, I can
put it up somewhere so that you can download it. Let me know if you
desire this.

Hope this helps,
Sagar

Orocos on Virtex-4 FPGA

Hi Sagar,

On Sun, Nov 8, 2009 at 00:22, Sagar Behere <sagar [dot] behere [..] ...> wrote:

> So I just finished cross-compiling the latest stable orocos-rtt (1.10),
> orocos-ocl and orocos-bfl for the Virtex 4 (ppc_4xx ).
>
> Here is a report. (I'm somewhat of a newbie, so what failed for me might
> work for you.)
>

Thanks for keeping us posted !

>
> Philippe Hamelin wrote:
>
> > Cross-compiling Boost and ACE+TAO is the thing I fear most. Was it hard?
>
> I didn't enable CORBA.
> Cross compiling boost involves black-magic. This link helps a lot:
> http://goodliffe.blogspot.com/2008/05/cross-compiling-boost.html
>
> Back when I had tried it before, I had used boost 1_34_1. Now, I tried
> cross-compiling both boost 1_39 as well as boost 1_40. Although I had
> partial success, it wasn't good enough for Orocos because I was unable
> to successfully cross-compile the libboost_thread-mt library. I
> eventually gave up and decided to try compiling with my earlier 1_34_1
> version of boost.
>

We don't depend on boost-thread for Linux systems. This is clearly
documented here:
http://www.orocos.org/stable/documentation/rtt/v1.10.x/doc-xml/orocos-in...

>
> cppunit cross-compiles without problems.
>

We don't have any dependency on this either. Did you read pre-1.10
documentation ?

>
> I was unable to cross-compile Xerces. But the docs say that in that case
> a native parser is used.
>

Indeed.

>
> Next, when I tried to compile RTT, cmake seemed to insist that xerces
> was present, but when it tried to link, it couldn't find it (because a
> cross compiled version of xerces was in reality, absent). It was finding
> the version of xerces present on the laptop I was using to cross-compile
> ( an AMD64 version). So I simply did
>
> apt-get remove libxerces-c2-dev
>
> then compiled orocos-rtt again and this time it didn't find xerces and
> used the TinyMarshaller.
>

If you cross compile with cmake, you need to instruct cmake not to search
your system paths.
See
http://www.cmake.org/Wiki/CMake_Cross_Compiling#Searching_and_finding_ex...

>
> Building the tests fails because boost 1_34 seems to lack a library with
> the word "intrusive" in its name (sorry for being so vague, I'm typing
> from memory). So I simply disabled the building of tests. (On my local
> amd64 machine, I had resolved this problem by installing boost-1.40 from
> the ubuntu repositories.)
>

This is probably a bug in our build system. Fixing it.

>
> After all this, orocos-rtt compiled.
>
> orocos-ocl and bfl cross-compile without issues.
>
> After this I reinstalled the libxerces-c2-dev on my local system.
>
> If you wish to have the cross compiled version of boost 1_34_1, I can
> put it up somewhere so that you can download it. Let me know if you
> desire this.
>

Cross compiled versions for embedded systems are seldomly shared because of
their target specific nature (what works for you may not for me). I think
instructions like these are more helpful and it would be great to have a
wiki page that collects experiences like these. We did so for the windows
builds too.

Peter

Orocos on Virtex-4 FPGA

2009/11/9 Peter Soetens <peter [..] ...>

> Hi Sagar,
>
> On Sun, Nov 8, 2009 at 00:22, Sagar Behere <sagar [dot] behere [..] ...> wrote:
>
>> So I just finished cross-compiling the latest stable orocos-rtt (1.10),
>> orocos-ocl and orocos-bfl for the Virtex 4 (ppc_4xx ).
>>
>> Here is a report. (I'm somewhat of a newbie, so what failed for me might
>> work for you.)
>>
>
> Thanks for keeping us posted !
>
>
>>
>> Philippe Hamelin wrote:
>>
>> > Cross-compiling Boost and ACE+TAO is the thing I fear most. Was it hard?
>>
>> I didn't enable CORBA.
>>
>
Does anyone has ever cross-compiled ACE+TAO for ppc ? It seems to be the
last missing piece of the puzzle.

> Cross compiling boost involves black-magic. This link helps a lot:
>> http://goodliffe.blogspot.com/2008/05/cross-compiling-boost.html
>>
>> Back when I had tried it before, I had used boost 1_34_1. Now, I tried
>> cross-compiling both boost 1_39 as well as boost 1_40. Although I had
>> partial success, it wasn't good enough for Orocos because I was unable
>> to successfully cross-compile the libboost_thread-mt library. I
>> eventually gave up and decided to try compiling with my earlier 1_34_1
>> version of boost.
>>
>
> We don't depend on boost-thread for Linux systems. This is clearly
> documented here:
>
> http://www.orocos.org/stable/documentation/rtt/v1.10.x/doc-xml/orocos-in...
>
>
>>
>> cppunit cross-compiles without problems.
>>
>
> We don't have any dependency on this either. Did you read pre-1.10
> documentation ?
>
>
>>
>> I was unable to cross-compile Xerces. But the docs say that in that case
>> a native parser is used.
>>
>
> Indeed.
>
>
>>
>> Next, when I tried to compile RTT, cmake seemed to insist that xerces
>> was present, but when it tried to link, it couldn't find it (because a
>> cross compiled version of xerces was in reality, absent). It was finding
>> the version of xerces present on the laptop I was using to cross-compile
>> ( an AMD64 version). So I simply did
>>
>> apt-get remove libxerces-c2-dev
>>
>> then compiled orocos-rtt again and this time it didn't find xerces and
>> used the TinyMarshaller.
>>
>
> If you cross compile with cmake, you need to instruct cmake not to search
> your system paths.
> See
> http://www.cmake.org/Wiki/CMake_Cross_Compiling#Searching_and_finding_ex...
>
>
>>
>> Building the tests fails because boost 1_34 seems to lack a library with
>> the word "intrusive" in its name (sorry for being so vague, I'm typing
>> from memory). So I simply disabled the building of tests. (On my local
>> amd64 machine, I had resolved this problem by installing boost-1.40 from
>> the ubuntu repositories.)
>>
>
> This is probably a bug in our build system. Fixing it.
>
>
>>
>> After all this, orocos-rtt compiled.
>>
>> orocos-ocl and bfl cross-compile without issues.
>>
>> After this I reinstalled the libxerces-c2-dev on my local system.
>>
>> If you wish to have the cross compiled version of boost 1_34_1, I can
>> put it up somewhere so that you can download it. Let me know if you
>> desire this.
>>
>
> Cross compiled versions for embedded systems are seldomly shared because of
> their target specific nature (what works for you may not for me). I think
> instructions like these are more helpful and it would be great to have a
> wiki page that collects experiences like these. We did so for the windows
> builds too.
>
> Peter
>
>

Orocos on Virtex-4 FPGA

On Nov 9, 2009, at 09:12 , Philippe Hamelin wrote:

>
> 2009/11/9 Peter Soetens <peter [..] ...>
> Hi Sagar,
>
> On Sun, Nov 8, 2009 at 00:22, Sagar Behere <sagar [dot] behere [..] ...>
> wrote:
> So I just finished cross-compiling the latest stable orocos-rtt
> (1.10),
> orocos-ocl and orocos-bfl for the Virtex 4 (ppc_4xx ).
>
> Here is a report. (I'm somewhat of a newbie, so what failed for me
> might
> work for you.)
>
> Thanks for keeping us posted !
>
>
> Philippe Hamelin wrote:
>
> > Cross-compiling Boost and ACE+TAO is the thing I fear most. Was it
> hard?
>
> I didn't enable CORBA.
>
> Does anyone has ever cross-compiled ACE+TAO for ppc ? It seems to be
> the last missing piece of the puzzle.

We actually gave up on ACE/TAO due to major build issues building it
_natively_ for Mac OS X. I shudder to think what cross-compiling it
will be like ...

YMMV
Stephen

Orocos on Virtex-4 FPGA

2009/11/9 S Roderick <kiwi [dot] net [..] ...>

> On Nov 9, 2009, at 09:12 , Philippe Hamelin wrote:
>
>
> 2009/11/9 Peter Soetens <peter [..] ...>
>
>> Hi Sagar,
>>
>> On Sun, Nov 8, 2009 at 00:22, Sagar Behere <sagar [dot] behere [..] ...>wrote:
>>
>>> So I just finished cross-compiling the latest stable orocos-rtt (1.10),
>>> orocos-ocl and orocos-bfl for the Virtex 4 (ppc_4xx ).
>>>
>>> Here is a report. (I'm somewhat of a newbie, so what failed for me might
>>> work for you.)
>>>
>>
>> Thanks for keeping us posted !
>>
>>
>>>
>>> Philippe Hamelin wrote:
>>>
>>> > Cross-compiling Boost and ACE+TAO is the thing I fear most. Was it
>>> hard?
>>>
>>> I didn't enable CORBA.
>>>
>>
> Does anyone has ever cross-compiled ACE+TAO for ppc ? It seems to be the
> last missing piece of the puzzle.
>
>
> We actually gave up on ACE/TAO due to major build issues building it
> _natively_ for Mac OS X. I shudder to think what cross-compiling it will be
> like ...
>
>
Does OmniOrb should then be a better starting point? Does OmniOrb and
ACE/TAO are compatible (ie. OmniOrb on embedded Linux and ACE/TAO on desktop
client) ?

Philippe

> YMMV
> Stephen
>
>