Archived

This forum has been archived. Please start a new discussion on GitHub.

Successfully made it run in my board.

Very good! IceE is released, I have been waitting for it for a long time. Let me try it.

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.
  • marc
    marc Florida
    Great! I'm glad to hear that you were able to get it to work so easily and quickly.
  • 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 image
  • 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.0
  • 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.
    Which client will have such footprint? Any demo and tests are not less then 500k with strip -s? F.e. demo/hello
    591596 2005-08-30 14:01 client
    766896 2005-08-30 14:01 server
    
  • dwayne
    dwayne St. John's, Newfoundland
    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,
    Dwayne
  • Hmm... it's really confusing. :confused:

    Seems to be that gcc wants -Os instead of -O3 (BTW O3 is not recommended, O2 is better).
    This is for -O2
    435592 2005-08-30 18:35 client
    

    This is for -Os
    377000 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
    
  • dwayne
    dwayne St. John's, Newfoundland
    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.
  • 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?
    Better = stable. O2 sometimes faster then O3. But in most case smaller then O3.
    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.
    "heuristically" => some times unpredictable :).
  • One more question. Are there any plans for Python mappings for IceE. (or it is not too difficult to port IcePy to IcePyE)?
  • Here is my board that running IceE on WinCE.

    Here is my board that running IceE on WinCE
  • mes
    mes California
    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)?
    We have no plans at present to port IcePy to Ice-E. This would require a significant effort, since IcePy uses features of Ice that are not supported by Ice-E. Furthermore, the commercial need for an IcePy-E is very questionable, since Python does not appear to be commonly used in embedded applications.

    Take care,
    - Mark
  • 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.
    It's true. But IceE is small and simple. This allow to make compact IcePy subset with small footprint. But this is not a question with commercial or other target. Only a question :).