Archived
This forum has been archived. Please start a new discussion on GitHub.
Successfully made it run in my board.
Comments
-
Successfully made it run in my board.
Successfully made it run in my board. My board is the ARM920T CPU board running WinCE.net 4.2.0 -
Great! I'm glad to hear that you were able to get it to work so easily and quickly.0
-
It run very well in Emulator too.
Yes, because you provided the full document to help us how to use it. thank you very much!
The IceE image0 -
The size of the Linux library is very large.
I compiled IceE with arm-linux-gcc 3.3.2, but the library is too large to fit in an embedded system.
lrwxrwxrwx 1 zzq01 zzq01 14 Aug 30 15:07 libIceEC.so -> libIceEC.so.10
lrwxrwxrwx 1 zzq01 zzq01 17 Aug 30 15:07 libIceEC.so.10 -> libIceEC.so.1.0.0
-rwxrwxr-x 1 zzq01 zzq01 5827350 Aug 30 15:07 libIceEC.so.1.0.0
lrwxrwxrwx 1 zzq01 zzq01 13 Aug 30 15:06 libIceE.so -> libIceE.so.10
lrwxrwxrwx 1 zzq01 zzq01 16 Aug 30 15:06 libIceE.so.10 -> libIceE.so.1.0.0
-rwxrwxr-x 1 zzq01 zzq01 6230350 Aug 30 15:06 libIceE.so.1.0.0
lrwxrwxrwx 1 zzq01 zzq01 19 Aug 30 15:07 libTestCommon.so -> libTestCommon.so.10
lrwxrwxrwx 1 zzq01 zzq01 22 Aug 30 15:07 libTestCommon.so.10 -> libTestCommon.so.1.0.0
-rwxrwxr-x 1 zzq01 zzq01 4648198 Aug 30 15:07 libTestCommon.so.1.0.00 -
May be this is debug version? Under gcc (GCC) 3.3.6 (Debian 1:3.3.6-7) with OPTIMIZED=yes in config/Make.rules
1001305 2005-08-30 13:46 libIceEC.so.1.0.0 1266668 2005-08-30 13:45 libIceE.so.1.0.0
But another question:As a result, statically-linked client and server executables can be as small as 150KB and 190KB in size, respectively.591596 2005-08-30 14:01 client 766896 2005-08-30 14:01 server
0 -
Hi,
The 150K and 190K values for the minimal size of the client and server were obtained on Windows using VC++ 7.1 (ie .NET 2003). The sizes on other platforms with other compilers will vary.
Here are the sizes that I obtained with various compilers building the minimal demo (demo/IceE/minimal). These are all optimized static library builds (for windows choose the "Release Static" build, for linux edit Make.rules and enable OPTIMIZE and STATICLIBS).
Also all of the optional IceE code suppport (router, locator, batch) has been disabled by editting include/IceE/Config.h and commenting out the config lines as shown.// // Comment this out if you want to build without Router support. // //#define ICEE_HAS_ROUTER // // Comment this out if you want to build without Locator support. // //#define ICEE_HAS_LOCATOR // // Comment this out if you want to build without batch mode on the // client side. // //#define ICEE_HAS_BATCH
Windows /w VC 7.1-rwxr-xr-x 1 dwayne None 156672 Aug 30 10:06 client.exe* -rwxr-xr-x 1 dwayne None 193024 Aug 30 10:06 server.exe*
Windows /w VC 6.0-rwxr-xr-x 1 dwayne None 180736 Aug 30 10:09 client.exe* -rwxr-xr-x 1 dwayne None 218624 Aug 30 10:09 server.exe*
Windows CE /w EVC++ 4.0 (ARM)-rwxr-xr-x 1 dwayne None 302080 Aug 30 10:12 minimalClient.exe -rwxr-xr-x 1 dwayne None 367104 Aug 30 10:13 minimalServer.exe
Linux /w GCC 3.4.4-rwxrwxr-x 1 dwayne dwayne 470744 Aug 30 10:07 client* -rwxrwxr-x 1 dwayne dwayne 646636 Aug 30 10:07 server*
Linux /w GCC 4.0.1-rwxrwxr-x 1 dwayne dwayne 437572 Aug 30 10:29 client* -rwxrwxr-x 1 dwayne dwayne 595740 Aug 30 10:29 server*
As you can see from the sizes, GCC is the poorest at producing compact code.
Of course we will continue to work towards making IceE smaller in future releases.
Regards,
Dwayne0 -
Hmm... it's really confusing.
Seems to be that gcc wants -Os instead of -O3 (BTW O3 is not recommended, O2 is better).
This is for -O2435592 2005-08-30 18:35 client
This is for -Os377000 2005-08-30 19:09 client
.text segment is around 250k
But still far from 156672. BTW if client compiled totally static non ELF binary (-static) here it is:-rwxrwxr-x 1 dusr3 dusr3 1011088 2005-08-30 18:54 client
Still thinking that rtti and name mangling is a trouble here (don't know how it in VC7, but here was dragons in VC6 with exported classes and mangled names, but this allow to more compact mangled names).
PS: little gcc warnings if no Batchmode enable. May be they must be ifdefed?:../../src/IceE/Outgoing.cpp: In constructor ` IceInternal::Outgoing::Outgoing(Ice::Connection*, IceInternal::Reference*, const std::string&, Ice::OperationMode, const Ice::Context&)': ../../src/IceE/Outgoing.cpp:67: warning: enumeration value `ModeBatchOneway' not handled in switch ../../src/IceE/Outgoing.cpp: In constructor ` IceInternal::Outgoing::Outgoing(Ice::Connection*, IceInternal::Reference*, const std::string&, Ice::OperationMode, const Ice::Context&)': ../../src/IceE/Outgoing.cpp:67: warning: enumeration value `ModeBatchOneway' not handled in switch ../../src/IceE/Outgoing.cpp: In member function `bool IceInternal::Outgoing::invoke()': ../../src/IceE/Outgoing.cpp:258: warning: enumeration value `ModeBatchOneway' not handled in switch
0 -
Hi,
Some updated size numbers...
First using -Os on linux with gcc 4.0.1 I now get-rwxrwxr-x 1 dwayne dwayne 327852 Aug 30 13:20 client* -rwxrwxr-x 1 dwayne dwayne 431004 Aug 30 13:20 server*
We will change -Os to be the default optimization. (For those listening in, you can easily change this by replacing instances of -O3 with -Os in config/Make.rules.Linux)
Also, I noticed that "Optimise Size" was not being set properly for the WindowsCE EVC++ build. New, slightly smaller, sizes for CE are-rwxr-xr-x 1 dwayne None 296960 Aug 30 13:28 minimalClient.exe -rwxr-xr-x 1 dwayne None 357888 Aug 30 13:30 minimalServer.exe
Btw, why do you say -O3 is not recommended and -O2 is better? Better in what way?
Regards,
Dwayne
PS: Thanks for the note regarding the gcc warnings. These will be fixed in the next release.0 -
In any case this is a good work. Now Ice can live on typical embedded hardware such as DLink routers with linux onboard .dwayne wrote:Btw, why do you say -O3 is not recommended and -O2 is better? Better in what way?
http://freshmeat.net/articles/view/730/
And really this is conservative opinion... most linux systems (except Gentoo ) compiled on -O2.
Most unpleased effect, IMO in:-finline-functions
Integrate all simple functions into their callers. The compiler
heuristically decides which functions are simple enough to be worth
integrating in this way.
If all calls to a given function are integrated, and the function
is declared "static", then the function is normally not output as
assembler code in its own right.
Enabled at level -O3.0 -
One more question. Are there any plans for Python mappings for IceE. (or it is not too difficult to port IcePy to IcePyE)?0
-
0
-
aka50 wrote:One more question. Are there any plans for Python mappings for IceE. (or it is not too difficult to port IcePy to IcePyE)?
Take care,
- Mark0 -
mes wrote:Furthermore, the commercial need for an IcePy-E is very questionable, since Python does not appear to be commonly used in embedded applications.0