2010-12-02 06:17:39     Corba and uclinux

Document created by Aaronwu Employee on Aug 23, 2013
Version 1Show Document
  • View in full screen mode

2010-12-02 06:17:39     Corba and uclinux

shuja ahmed (UNITED KINGDOM)

Message: 96405   

 

I wanted to perform some distributed image processing task between multiple robots.  All the robots are having blackfin processor. To establish communication and to perform distributed computing, I wanted to cross compile Corba or ice-E with uclinux.

 

Any one already done this? I will appreciate any suggestion or help

QuoteReplyEditDelete

 

 

2010-12-02 13:25:11     Re: Corba and uclinux

Robert Cochran (UNITED STATES)

Message: 96416   

 

I was also looking around the other day for CORBA.  I thought maybe I might find an implmentation for CORBA/E for uCLinux, but I had no luck.   In fact, I didn't see much in the way of implementations for embedded CORBA.   Perhaps it hasn't taken off?  And after seeing how heavy the embedded spec is, I pretty much dropped the idea.

 

When you ask about CORBA, are you asking about CORBA/E?  Have you seen this implemented on embedded devices?

 

Info on CORBA/E:   www.corba.org/corba-e/

 

Bob

QuoteReplyEditDelete

 

 

2010-12-02 14:21:45     Re: Corba and uclinux

Wojtek Skulski (UNITED STATES)

Message: 96418    Our team used ICE on BF533 / uCLinux platform. I am trying to gather more

info how it was done.

QuoteReplyEditDelete

 

 

2010-12-02 18:31:03     Re: Corba and uclinux

Wojtek Skulski (UNITED STATES)

Message: 96422   

 

Shuja:

 

concerning ICE-E on uCLinux, one of the developers who did most of this work forwarded me a short description. I can attest I watched this work being done, but I do not know the details. I am attaching a one-page summary. Maybe it will be helpful.

 

IceE_On_Blackfin.doc

QuoteReplyEditDelete

 

 

2010-12-03 02:46:46     Re: Corba and uclinux

shuja ahmed (UNITED KINGDOM)

Message: 96427   

 

Hi Wojtek,

 

Thanks for help. I will give it a try now and will share the output.

 

regards

QuoteReplyEditDelete

 

 

2010-12-03 05:53:15     Re: Corba and uclinux

shuja ahmed (UNITED KINGDOM)

Message: 96444   

 

Hi Wojtek,

 

I tried to follow the procedure you suggested. I am using ubuntu platform and I am not able to "make" "IceE-trans-1.2.0" successfully. I got the following error.

 

making all in src

make[1]: Entering directory `/home/shuja/Desktop/Phd/ICE/IceE-trans-1.2.0/src'

making all in IceUtil

make[2]: Entering directory `/home/shuja/Desktop/Phd/ICE/IceE-trans-1.2.0/src/IceUtil'

c++ -c -I../../include  -DICE_UTIL_API_EXPORTS -I..  -ftemplate-depth-128 -Wall -D_REENTRANT -O2 -DNDEBUG ArgVector.cpp

ArgVector.cpp: In member function ‘void IceUtil::ArgVector::copyVec(int, int, char**)’:

ArgVector.cpp:74: error: ‘strlen’ was not declared in this scope

ArgVector.cpp:91: error: ‘strcpy’ was not declared in this scope

ArgVector.cpp: In member function ‘void IceUtil::ArgVector::copyVec(const std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)’:

ArgVector.cpp:126: error: ‘strcpy’ was not declared in this scope

make[2]: *** [ArgVector.o] Error 1

make[2]: Leaving directory `/home/shuja/Desktop/Phd/ICE/IceE-trans-1.2.0/src/IceUtil'

make[1]: *** [all] Error 1

make[1]: Leaving directory `/home/shuja/Desktop/Phd/ICE/IceE-trans-1.2.0/src'

 

 

Any suggestions..

QuoteReplyEditDelete

 

 

2010-12-03 06:43:39     Re: Corba and uclinux

shuja ahmed (UNITED KINGDOM)

Message: 96446   

 

Yeah Robert,

 

I was refering to corba/e which has smaller foot print and specially for embedded systems.

QuoteReplyEditDelete

 

 

2010-12-03 06:56:35     Re: Corba and uclinux

Robert Cochran (UNITED STATES)

Message: 96447   

 

strcpy & strlen are in the C library.  Try adding a #include <string.h> to the .cpp files.

QuoteReplyEditDelete

 

 

2010-12-03 07:23:10     Re: Corba and uclinux

shuja ahmed (UNITED KINGDOM)

Message: 96449   

 

Hi Again,

 

I just added string.h and limits.h in the cpp files which were not compiled correctly and now I am able to "make install" atleast "IceE-trans-1.2.0". I will report further progress here so that other users as Robert can also benefit from it.

QuoteReplyEditDelete

 

 

2010-12-03 11:12:55     Re: Corba and uclinux

Wojtek Skulski (UNITED STATES)

Message: 96456    Our team was using ICE-E 1.3. If you go to the ZeroC download page

mentioned at the bottom of the .doc file , you will see this particular

version.

 

I do have a remnant of this project in the form of

IceE-1.3.0-blackfinbf533.tar.bz2, but it is 10 megs. The GForge server

refuses to take such a large attachment. I do not know whether it is a

regular ICE-E 1.30 downloaded from ZeroC, or perhaps with some tweaks. My

friends seem too busy to answer this question.

 

If there is a way to post a 10-meg archive, I can do it for you.

QuoteReplyEditDelete

 

 

2010-12-04 05:32:37     Re: Corba and uclinux

shuja ahmed (UNITED KINGDOM)

Message: 96469   

 

Hi Wojtek,

 

I have followed the procedure, as suggested in the document you forwarded me. In the first step, I have build "IceE-trans-1.2.0" successfully and generated the binary files "icecpp", "slice2cppe" and "slice2javae". Then I have export the path to the these binary files. I have also set the following variables via export:

 

CXX=bfin-linux-uclibc-g++

 

AR=bfin-linux-uclibc-ar

 

This is for cross compilation of Ice-E with blackfin. Then I have downloaded "IceE-1.3.0-linux.tar.gz". After decompressing and doing "make" and "make install", I am able to cross compile it with blackfin. In the "cppe/config/Make.rules" of "IceE-1.3.0" folder, I have set the "prefix" variable to point to the build directory (i.e. /home/shuja/Desktop/Phd/ICE/IceE3Build). Now in "IceE3Build" directory, the following files and folders are generated

 

shuja@ubuntu:~/Desktop/Phd/ICE/IceE3Build$ ls

bin  ICEE_LICENSE  include  lib  LICENSE  slice

 

The size of IceE3Build in uncompressed form is 30Mb (and 7.6Mb if I compress it). The size of "lib" folder alone is 29Mb. Which is quite large for blackfin processor.

 

In my project, I am using surveyor robots and they have BF537 processor installed on them. During cross compilation of Ice-E, I did not mention any where about the processor number (i.e. BF537). I guess this cross compiled version should work on any processor following blackfin architecture. Even the final cross compiled libraries you got (i.e. IceE-1.3.0-blackfinbf533.tar.bz2), should work for BF537 too unless they are customized some how for BF533 processor. I guess you can share "IceE-1.3.0-blackfinbf533.tar.bz2" with me on hotmail as it allows to attach 10Mb files. If it is ok with this website and we are not breaking any rules, then please tell me. I will share my hotmail ID with you here.

 

In the document you forwarded me, I am stuck with the following section which comes after cross compilation of IceE.

 

"Load the contents of the directory you set as “prefix” above onto the board. On the board set LD_LIBRARY_PATH to include the lib subdirectory of $prefix.

 

“root:> export LD_LIBRARY_PATH=”$LD_LIBRARY_PATH:/iceE/lib”

 

The library folder is 29Mb and even compressed version is also going to be above 6Mb. How can we load it to blackfin processor. I am confuse here now. Please also share if in "IceE-1.3.0-blackfinbf533.tar.bz2" file, you did some customization for BF533 processor.

 

In general, I am trying to cross compile this middleware for blackfin, because I wanted to do some distributed computing between multiple Surveyor robots. All these robots will be connected through a wireless medium and will be performing some distributed computing task together. I hope by cross compiling IceE, I am going in the right direction. Please guide me if I am doing anything wrong.

 

Any suggestion will be appreciated.

QuoteReplyEditDelete

 

 

2010-12-04 08:06:27     Re: Corba and uclinux

shuja ahmed (UNITED KINGDOM)

Message: 96473   

 

Hi Again,

 

Another update. To reduce the size of "lib" folder, I have applied the following changes in "cppe/config/Make.rules" file.

 

OPTIMIZE_SIZE        = yes

OPTIMIZE_SPEED        = yes

After this, the size of "lib" folder is reduced from 29Mb to 3.6Mb. There are someother options too which can reduce the size of lib folder further. These options are following

 

#STATICLIBS        = yes

#GUMSTIX        = yes

HAS_ROUTER        = yes

HAS_LOCATOR        = yes

HAS_BATCH        = yes

HAS_WSTRING        = yes

HAS_OPAQUE_ENDPOINTS    = yes

HAS_AMI            = yes

DEFAULT_MUTEX_PROTOCOL  ?= PrioNone

 

 

For a moment, I dont know anything about these options. Maybe if someone can suggest what we really need to perform distributed computing on blackfin based embedded system. Then we can keep only those features enabled and can get rid off the rest of features.

QuoteReplyEditDelete

 

 

2010-12-07 16:09:46     Re: Corba and uclinux

Ben Matthews (UNITED STATES)

Message: 96544   

 

I suppose I'm one of the people who Wojtek is talking about.

 

Since you've gotten libraries, I assume you're all set, but if not I've put the patches against IceE and uClinux that I had developed last time I was using Ice on Blackfin here:   kc2vjw.com/blackfin/ice/ I assume the tarball that Wojtek mentioned is just the Ice source patched with   kc2vjw.com/blackfin/ice/icee-1.3.0-bfin_jun25_09.patch

 

We handled the Library size issue by putting them on a network filesystem. Obviously stripping the binaries helps a lot (it's c++ after all), but it still leaves you with a library that's almost as large as the rest of the system.  Turning off those other features probably won't help much. You should be able to figure out what they do by looking at the Ice manual (though I still haven't found a good list of features in Ice that are missing in IceE). If you're not very familiar with Ice, I would start looking at the manual before you proceed too much (maybe write some tests on X86 machines). For simple applications ICE doesn't save you much work over designing a simple text or packed binary protocol and using POSIX sockets (and adds a massive amount of object code and build time headache).

 

Depending on what kind of distributed computing you're trying to do, there are lots of other options out there. I'd shop around. The only reason we used Ice was because it's used extensively elsewhere in our organization (on much more powerful/supported platforms - x86 and sparc mostly). Ice does seem stable and adequately fast, but I don't have too many other nice things to say about it ;-)

Attachments

Outcomes