Which Connext DDS for Parallella (ARM9) ?

13 posts / 0 new
Last post
frgo's picture
Offline
Last seen: 6 years 9 months ago
Joined: 12/28/2011
Posts: 20
Which Connext DDS for Parallella (ARM9) ?

Hi all,

do the instructions for installing Connext DDS on RaspberryPi also apply for an ARM9-based environment like this

TIA!

Kind regards

   Frank

Fernando Garcia's picture
Offline
Last seen: 5 months 2 weeks ago
Joined: 05/18/2011
Posts: 200

Hello Frank,

Even though it is not an officially supported platform (Raspberry Pi comes with a processor that implements the ARMv6 instruction set), I have run successfully the Raspberry Pi port on an ARM Cortex A8 board (e.g., BeagleBone), which implements the same ARMv7 instruction set ARM Cortex-A9 implements.

I think you should be fine, but it is a matter of running some tests. What Linux distribution do your Parallella boards run?

Thanks,
Fernando.

frgo's picture
Offline
Last seen: 6 years 9 months ago
Joined: 12/28/2011
Posts: 20

Hi Fernando,

the Parallella boards will be running Linaro Ubuntu, as per this info defined by Parallella here. Thanks for the info - will try this this week and report back. 

Regards

  Frank

Fernando Garcia's picture
Offline
Last seen: 5 months 2 weeks ago
Joined: 05/18/2011
Posts: 200

Great! Let us know how it goes.

Thanks,
Fernando.

FMA
FMA's picture
Offline
Last seen: 1 year 1 month ago
Joined: 09/09/2014
Posts: 10

@ Fernando, I'm getting errors whenever I try compiling on beaglebone (white).

Fernando Garcia's picture
Offline
Last seen: 5 months 2 weeks ago
Joined: 05/18/2011
Posts: 200

Hello Farouk,

Could you post the error message you are getting? Are you building on the Beaglebone or you are cross compiling from your machine?  What toolchain are you using to build?

Thanks,
Fernando.

FMA
FMA's picture
Offline
Last seen: 1 year 1 month ago
Joined: 09/09/2014
Posts: 10

Hi,

I'm not using toolchain, I installed the complete connext professional on BeagleBone (white), while compiling "HelloPublish.cpp" I get errors. The error says: Unrecognized command line option '-m32'

 

Regards,

Farouq

Fernando Garcia's picture
Offline
Last seen: 5 months 2 weeks ago
Joined: 05/18/2011
Posts: 200

Hello Farouq,

It looks like you are running a makefile designed to build for 32-bit Linux. How are you generating the makefile? Can you try to generate a makefile for armv6vfphLinux3.xgcc4.7.2? This post should guide you thorugh the process.

You can also tweak the makefile you have to use the right flags, the end makefile should look more or less like this one:

CC = arm-linux-gnueabihf-gcc
CFLAGS = -fpic -DRTI_UNIX -DRTI_LINUX -march=armv6 -mfpu=vfp -mfloat-abi=hard -mlong-calls
CLD = arm-linux-gnueabihf-gcc
CLDFLAGS = -march=armv6 -mfpu=vfp -mfloat-abi=hard -mlong-calls
SYSLIBS = -ldl -lnsl -lm -lpthread -lrt
Fernando.
FMA
FMA's picture
Offline
Last seen: 1 year 1 month ago
Joined: 09/09/2014
Posts: 10

Hello Fernando,

Thank you for your help. But I have "Permission denied" message while object file are converted to executables.

Attached is a sort of screenshot of what happened.

 

Regards,

Farouq

File Attachments: 
Fernando Garcia's picture
Offline
Last seen: 5 months 2 weeks ago
Joined: 05/18/2011
Posts: 200

Hello Farouq,

It looks like you are using a makefile for 32-bit Linux (Intel processor), which tries to build against the libraries for that platform. You will have to use the makefile armv6vfphLinux3.xgcc4.7.2, which has the right flags and uses the right libraries to build for the ARM processor of your BeagleBone. To use this makefile, just type:

cd ~/RTI/ndds.5.1.0/example/CPP/Hello_simple
make -f Makefile.armv6vfphLinux3.xgcc4.7.2

It looks like you have installed the RTI Professional Edition on the BeagleBone, which only includes DDS libraries for i86Linux2.6gcc4.4.5 (32-bit Intel processor). Check that you have libraries for armv6vfphLinux3.xgcc4.7.2 under ~/RTI/ndds.5.1.0/lib/. If you don't have the libraries for that platform, you can download them from here. And extract them on your installation of RTI Connext DDS.

Please, let me know how it goes. Also, since space on the BeagleBone is probably limited, make sure you delete the object files you created for i86Linux2.6gcc4.4.5 by doing

rm -rf ~/RTI/ndds.5.1.0/example/CPP/Hello_simple/objs/i86Linux2.6gcc4.4.5

Fernando.

FMA
FMA's picture
Offline
Last seen: 1 year 1 month ago
Joined: 09/09/2014
Posts: 10

Hi Fernando,

Thanks for the patience, it also gave error message. So I checked the architecture and gcc version. Attached is the snapshot.

File Attachments: 
FMA
FMA's picture
Offline
Last seen: 1 year 1 month ago
Joined: 09/09/2014
Posts: 10

Hi Fernando,

It turns out I need libraries for armv7, which RTI happily gave it to me. Thank you. The HelloPublisher compiles fine. However,  it complains that it cannot create domain participant. Below is the terminal running Hello_simple in verbose mode;

 

root@beaglebone:~/RTI/ndds.5.1.0/example/CPP/Hello_simple# ./objs/armv7leLinux2.6gcc4.4.1/HelloPublisher

DDS_DiscoveryQosPolicy_get_default:no environment variable or file NDDS_DISCOVERY_PEERS

DDS_StringSeq_ensure_length:memory allocation: original 0, new 3

DDS_String_replace:builtin.udpv4://239.255.0.1

DDS_String_replace:builtin.udpv4://127.0.0.1

DDS_String_replace:builtin.shmem://

DDS_StringSeq_ensure_length:memory allocation: original 0, new 1

DDS_String_replace:builtin.udpv4://239.255.0.1

DDS_DiscoveryQosPolicy_get_default:value of: initial_peers="builtin.udpv4://239.255.0.1,builtin.udpv4://127.0.0.1,builtin.shmem://"

DDS_DiscoveryQosPolicy_get_default:value of: multicast_receive_addresses="builtin.udpv4://239.255.0.1"

DDS_String_alloc:8

DDS_String_dup:[ENTITY]

DDS_DomainParticipantFactory_initializeI:Welcome to NDDS nddscore1.5e.rev00-nddsc1.5e.rev00-nddscpp1.5e.rev00

DDS_DiscoveryQosPolicy_get_default:no environment variable or file NDDS_DISCOVERY_PEERS

DDS_StringSeq_ensure_length:memory allocation: original 0, new 3

DDS_String_replace:builtin.udpv4://239.255.0.1

DDS_String_replace:builtin.udpv4://127.0.0.1

DDS_String_replace:builtin.shmem://

DDS_StringSeq_ensure_length:memory allocation: original 0, new 1

DDS_String_replace:builtin.udpv4://239.255.0.1

DDS_DiscoveryQosPolicy_get_default:value of: initial_peers="builtin.udpv4://239.255.0.1,builtin.udpv4://127.0.0.1,builtin.shmem://"

DDS_DiscoveryQosPolicy_get_default:value of: multicast_receive_addresses="builtin.udpv4://239.255.0.1"

DDS_String_alloc:8

DDS_String_dup:[ENTITY]

DomainParticipantFactory_impl::create_participant_with_profile():ERROR: Failed to create profile

Unable to create domain participant.

Exiting...

 

 

What should I do?

Thank you.

 

 

Regards,

Farouq M. A.

frgo's picture
Offline
Last seen: 6 years 9 months ago
Joined: 12/28/2011
Posts: 20

Seems as if file USER_QOS_PROFILES.xml is missing from the directory where your executable is located. Another possible error is that the  USER_QOS_PROFILES.xml file does not contain the profile you wanted. What profile do you want to use? 

Cheers

  Frank