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?
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.
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?
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'
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:
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
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;
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?
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.
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
Great! Let us know how it goes.
Thanks,
Fernando.
@ Fernando, I'm getting errors whenever I try compiling on beaglebone (white).
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.
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
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:
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
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:
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
Fernando.
Hi Fernando,
Thanks for the patience, it also gave error message. So I checked the architecture and gcc version. Attached is the snapshot.
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.
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