EmbeddedRelated.com
Forums

Any opinions/experiences on ImageCraft compiler?

Started by Al Dietrich February 24, 2005
Hello,

My company will soon purchase a MSP430 compiler.
One of the lowest cost MSP430 compilers is ImageCraft.  How
does it compare to Crossworks and IAR?   Crossworks seems
to be one of the favorite compilers in the discussion group.

Al





Beginning Microcontrollers with the MSP430

If you're looking for low-cost compilers, try mspgcc. Many
people in this discussion list don't like it, but I've been using
it for some time and never found any bug (probably they exist!).


At 16:28 24/2/2005, you wrote:

>Hello,
>
>My company will soon purchase a MSP430 compiler.
>One of the lowest cost MSP430 compilers is ImageCraft.  How
>does it compare to Crossworks and IAR?   Crossworks seems
>to be one of the favorite compilers in the discussion group.
>
>Al
>
>
>
>
>
>
>.
>
>
>Yahoo! Groups Links
>
>
>
>


Hi Al, 

> My company will soon purchase a MSP430 compiler.
> One of the lowest cost MSP430 compilers is ImageCraft.  How
> does it compare to Crossworks and IAR?   Crossworks seems
> to be one of the favorite compilers in the discussion group.

...that should be a FAQ.  :-)

--
Paul Curtis, Rowley Associates Ltd  http://www.rowley.co.uk
CrossWorks for MSP430, ARM, AVR and (soon) MAXQ processors

You can also go to http://www.dragonsgate.net/mailman/listinfo and browse 
through the icc-430 archive and see what our customers say.

At 11:28 AM 2/24/2005, you wrote:


>Hello,
>
>My company will soon purchase a MSP430 compiler.
>One of the lowest cost MSP430 compilers is ImageCraft.  How
>does it compare to Crossworks and IAR?   Crossworks seems
>to be one of the favorite compilers in the discussion group.
>
>Al

// richard <http://www.imagecraft.com> 
<http://www.dragonsgate.net/mailman/listinfo> 


I use ImageCraft's icc430 and like it. Object code
is good and so is their support.

I tried IAR and it seemed big and clunky to me,
like serious feature creep.




Hi Al, perhaps I shouldn't be the one replying, but I'm possibly
one of 
the most objective here. I don't use a compiler at all for any micro. I 
have done in the past, reluctantly.

There is now a huge range of choices for MSP430 compilers, ranging from 
mspgcc, which is free, to IAR which was over $2k last time I looked. in 
between are Hi-Tech, imagecraft Quadravox and Crossworks, plus quite a 
few others that are perhaps less popular here. Imagecraft, IARE, 
Quadravox and Crosswortks are all very active in this group, both 
supporting their products, and imparting their expertise to help 
generally. I use the IAR assembler, but default. I have once had to deal 
with Imagecraft wrt an AVR micro job that I inherited. Richard went 
Above and beyond in supporting me. Imagecraft have the cheapest 
commercial compiler of those mentioned (I don't know where Hi-tech sit). 
feedback here suggests that it has some unique and desirable features of 
its own, but is not as compact or as fast as Crossworks or IAR. I posted 
a bitch here about MSP430f169 availability, and Michel from Quadravox 
sent me a softbaugh 169 eval board with a trial version of his compiler 
at absolutely no cost. Amazing service since it is fairly well 
understood that I'm a very unlikely client for compilers. If he can help 
me like that  I would suggest his clients get treated exceptionally 
well. AQ430 is lower end of the mid range pricing, and performance wise 
feedback suggests it sits between Imagecraft and Crossworks. Crossworks 
is the most often mentioned compiler in recent times, and Paul is the 
most vocal of the compiler vendors. Again personal experiences talking 
to Paul has been nothing but a pleasurable experience. I believe 
Crossworks is around $1000, top of the range of the independents in 
price, but less than hal;f the price of IAR. Exceptioanlly well 
supported too. Probably has the most efficient optimisations.

All 3 of these vendors offer a free 30 day trial of their products with 
absolutely no restrictions that I am aware of. I would suggest that your 
best approach would be to first assess your needs, with respect to 
features that are most imporrtant, then trial these 3 products, and 
perhaps mspgcc. There are many people who have strong reservations about 
using a public domain compiler with no formal support, for commercial 
work, and orthers who swear by it. Most feedback seems to suggest that 
it is slow and large, but good value ;@}

Cheers

Al

Al Dietrich wrote:

>Hello,
>
>My company will soon purchase a MSP430 compiler.
>One of the lowest cost MSP430 compilers is ImageCraft.  How
>does it compare to Crossworks and IAR?   Crossworks seems
>to be one of the favorite compilers in the discussion group.
>
>Al
>
>
>
>
>
>
>.
>
> 
>Yahoo! Groups Links
>
>
>
> 
>
>
>
>
>
>  
>


Hi,

all compilers do have pros and cons.
The IAR compiler seems to produce the smallest code
when you use much floats/doubles but is far from C99 and
does not produce warnings at often occurring errors like
a==b; (statement without effect, should surely be a=b;).
or
a[i] = i++; (undefined operation)
and many others (uninitialized variable, unused variable,
no return type, comparison is always true/false due to limited
range of data type, parameter of wrong type, undefined
operation in function call, ...).
The mspgcc does complain about such malicious code and
is close to C99, so you can use your MSP430 code also in an
hosted environment with same endianess (PC, ARM, ...)
and vice versa without porting something (if you use only types
from stdint.h). If you want such portability with IAR you have
to do extra work, e. g. write a stdint.h and use empty definitions like
#define restrict
and you also have to take into account that for IAR every variable is
volatile.

And the compilers do have some errors, e. g. in IAR 1
a[e] is not identical to *((a)+(e)), so this macro does not work
with IAR 1 but with every other C compiler:
// Convert a nibble into a text hex digit.
#   define mc_NIBBLE_TO_TEXT(n) ("0123456789ABCDEF"[ n ])
.

You have to decide what's most important for you and
you should evaluate the compilers with you needs.

Regards,

Rolf


msp430@msp4... schrieb am 24.02.05 22:57:12:
> 
> 
> Hi Al, perhaps I shouldn't be the one replying, but I'm possibly
one of 
> the most objective here. I don't use a compiler at all for any micro.
I 
> have done in the past, reluctantly.
> 
> There is now a huge range of choices for MSP430 compilers, ranging from 
> mspgcc, which is free, to IAR which was over $2k last time I looked. in 
> between are Hi-Tech, imagecraft Quadravox and Crossworks, plus quite a 
> few others that are perhaps less popular here. Imagecraft, IARE, 
> Quadravox and Crosswortks are all very active in this group, both 
> supporting their products, and imparting their expertise to help 
> generally. I use the IAR assembler, but default. I have once had to deal 
> with Imagecraft wrt an AVR micro job that I inherited. Richard went 
> Above and beyond in supporting me. Imagecraft have the cheapest 
> commercial compiler of those mentioned (I don't know where Hi-tech
sit). 
> feedback here suggests that it has some unique and desirable features of 
> its own, but is not as compact or as fast as Crossworks or IAR. I posted 
> a bitch here about MSP430f169 availability, and Michel from Quadravox 
> sent me a softbaugh 169 eval board with a trial version of his compiler 
> at absolutely no cost. Amazing service since it is fairly well 
> understood that I'm a very unlikely client for compilers. If he can
help 
> me like that  I would suggest his clients get treated exceptionally 
> well. AQ430 is lower end of the mid range pricing, and performance wise 
> feedback suggests it sits between Imagecraft and Crossworks. Crossworks 
> is the most often mentioned compiler in recent times, and Paul is the 
> most vocal of the compiler vendors. Again personal experiences talking 
> to Paul has been nothing but a pleasurable experience. I believe 
> Crossworks is around $1000, top of the range of the independents in 
> price, but less than hal;f the price of IAR. Exceptioanlly well 
> supported too. Probably has the most efficient optimisations.
> 
> All 3 of these vendors offer a free 30 day trial of their products with 
> absolutely no restrictions that I am aware of. I would suggest that your 
> best approach would be to first assess your needs, with respect to 
> features that are most imporrtant, then trial these 3 products, and 
> perhaps mspgcc. There are many people who have strong reservations about 
> using a public domain compiler with no formal support, for commercial 
> work, and orthers who swear by it. Most feedback seems to suggest that 
> it is slow and large, but good value ;@}
> 
> Cheers
> 
> Al
> 
> Al Dietrich wrote:
> 
> >Hello,
> >
> >My company will soon purchase a MSP430 compiler.
> >One of the lowest cost MSP430 compilers is ImageCraft.  How
> >does it compare to Crossworks and IAR?   Crossworks seems
> >to be one of the favorite compilers in the discussion group.
> >
> >Al
> >
> >
> >
> >
> >
> >
> >.
> >
> > 
> >Yahoo! Groups Links
> >
> >
> >
> > 
> >
> >
> >
> >
> >
> >  
> >
> 
> 
> 
> .
> 
>  
> Yahoo! Groups Links
> 
> 
> 
>  
> 
> 
> 




<rolf.freitag@rolf...> writes:

> all compilers do have pros and cons.
> The IAR compiler seems to produce the smallest code
> when you use much floats/doubles but is far from C99 and
> does not produce warnings at often occurring errors like
> a==b; (statement without effect, should surely be a=b;).
> or
> a[i] = i++; (undefined operation)
> and many others (uninitialized variable, unused variable,
> no return type, comparison is always true/false due to limited
> range of data type, parameter of wrong type, undefined
> operation in function call, ...).
> The mspgcc does complain about such malicious code and
> is close to C99, so you can use your MSP430 code also in an
> hosted environment with same endianess (PC, ARM, ...)
> and vice versa without porting something (if you use only types
> from stdint.h). If you want such portability with IAR you have
> to do extra work, e. g. write a stdint.h and use empty definitions like
> #define restrict
> and you also have to take into account that for IAR every variable is
> volatile.
>
> And the compilers do have some errors, e. g. in IAR 1
> a[e] is not identical to *((a)+(e)), so this macro does not work
> with IAR 1 but with every other C compiler:
> // Convert a nibble into a text hex digit.
> #   define mc_NIBBLE_TO_TEXT(n) ("0123456789ABCDEF"[ n ])
> .
>
> You have to decide what's most important for you and
> you should evaluate the compilers with you needs.

Rolf,

I'm really impressed, you posted that old list *again*.


To all you newcomers here -- Rolf didn't like the IAR compiler it
looked back in the V1.xx days some years ago; we have come a long way
from then but apparently Rolf hasn't.


Our current product (V3.21) has none of the problems that you are
describing here:  The bugs you mentioned were corrected in the V2.xx
release some years ago, the current product do warn for most or all of
the suspicious cases that you have suggested, and where did you get
the idea that "every variable is volatile"?

The only thing that you are right about, at least partly, is that we
are not C99 compliant -- the reason is that the standard is rather
voluminous. Instead we see our product as a C89 product with all of
the C99 goodies that are relevant to embedded systems programming.
That includes "stdint.h", as well as many other features.

    -- Anders Lindgren, IAR Systems
-- 
Disclaimer: Opinions expressed in this posting are strictly my own and
not necessarily those of my employer.

Hi, ANDERS and ROLF
I am just curious about your debate ...

ROLF writes:

(IAR compiler)
 >> does not produce warnings at often occurring errors like
 > a==b; (statement without effect, should surely be a=b;).
 > or
 > a[i] = i++; (undefined operation)


In this moment I am not working with the MSP430 environment and I cannot 
check it.
However I tested this on the RENESAS NC30WA compiler and it does produce a 
warning of
meaningless statement for the first example.
However it does produce some "normal" code for the second
"bug" example.
And this is the point, why should this not be ?
I mean:
  the line
       a[i]=i ; looks ok to me.
As stupid as it can be, I even have used it sometimes, especially for some 
quick test.

NOW:
       a[i]=i++ ;
to me means : make a[i]=i and (once this has been made) increment i.

Why is this undefined ?
I know I am a beginner in C ...
Thanks for your patience
Antonio 


Hi!

>   the line
>        a[i]=i ; looks ok to me.
> As stupid as it can be, I even have used it sometimes, especially for some 
> quick test.

It looks ok to me too.


> NOW:
>        a[i]=i++ ;
> to me means : make a[i]=i and (once this has been made) increment i.

The tricky point is that standard only specifies that it should be
updated at the end of the statement (or sequence point, to be
technical).  It is undefined if it is updated when the code writes to
"a[i]".

Or, as our guest expert -- the IAR Compiler -- would formulate it:

    a[i] = i++;
    ^
"E:\src\cr16\test\und.c",6  Warning[Pa081]: undefined behavior: the
order of
          read and modification of parameter "i" (or a value reached
by some
          form of indirection through it) is undefined in this statement

    -- Anders Lindgren, IAR Systems
-- 
Disclaimer: Opinions expressed in this posting are strictly my own and
not necessarily those of my employer.