Here are links to both.
http://gnuarm.com/
http://www.codesourcery.com/gnu_toolchains/arm.html
In case you're looking for a Windows-hosted version, let me add a third one:
http://h-storm.tantos.homedns.org/gcc_arm.htm
This one has support for other languanges than C and C++ and was compiled
with the MinGW environment instead of the more common CygWin. The benefit is
that its smaller, faster and doesn't require the CygWin runtime DLL to work.
But all these differences are a matter of taste and mostly details.
Regards,
Andras Tantos
Andras,
Thanks for responding. I had lost track of your site and was hoping you
were paying attention here.
Can you say briefly what is different between the 3.3.1 or the 3.4.0?
Yeah, DynDNS simple DELETED my account! Anyway, it's back online now and
thanks for noting that...
The main difference between the 3.3 and 3.4 line of GCC is the new C++
parser code that got into 3.4. As usual, that fixes a lot of old issues and
introduces a whole set of new ones. Most of the changes are around template
handling and as such does not really make that much of a difference for
embedded developers. The whole (overwhelming) list is here:
http://gcc.gnu.org/gcc-3.4/changes.html
Regards,
Andras Tantos
Yeah, DynDNS simple DELETED my account! Anyway, it's back online now and
For ARM users, an important item on the list is the floating-point which got
literally several times faster with the new hand-coded routines.
Karl Olsen
Andrew
I did some single-precision tests for + - * / with the Keil simulator (which
assumes 0 waitstates).
Clocks for gcc-3.3.1, clocks for gcc-3.4.3, speedup:
__addsf3: 514 73 7.0x
__subsf3: 511 74 6.9x
__mulsf3: 428 49 8.7x
__divsf3: 634 142 4.5x
If you are using newlib (and you do, if you use the www.gnuarm.com compiler)
and need square root,
extern float __ieee754_sqrtf(float x);
a = __ieee754_sqrtf(b);
is much faster than
#include <math.h>
a = sqrtf(b);
sqrtf() is a wrapper around __ieee754_sqrtf() and adds the C error handling
(errno and matherr()) stuff.
Many similar __ieee754_ math functions exist which remove the C error
handling from the math functions. The unwrapped functions just return Inf
and NaN as appropriate in error situations.
Karl Olsen
>>
>> Do you have any figures for the actual floating point performance on,
>> say, a 60MHz ARM7?
>
>
> I did some single-precision tests for + - * / with the Keil simulator
> (which assumes 0 waitstates).
>
> Clocks for gcc-3.3.1, clocks for gcc-3.4.3, speedup:
>
> __addsf3: 514 73 7.0x
> __subsf3: 511 74 6.9x
> __mulsf3: 428 49 8.7x
> __divsf3: 634 142 4.5x
>
> If you are using newlib (and you do, if you use the www.gnuarm.com
> compiler) and need square root,
>
> extern float __ieee754_sqrtf(float x);
> a = __ieee754_sqrtf(b);
>
> is much faster than
>
> #include <math.h>
> a = sqrtf(b);
>
> sqrtf() is a wrapper around __ieee754_sqrtf() and adds the C error
> handling (errno and matherr()) stuff.
> Many similar __ieee754_ math functions exist which remove the C error
> handling from the math functions. The unwrapped functions just
> return Inf and NaN as appropriate in error situations.
>
Thanks very much for the information and tip: that's an impressive
improvement in the performance.
Andrew