EmbeddedRelated.com
Forums

Free ARM Compilers?

Started by Thomas Carley December 13, 2004
I have found 2 GCC ports for ARM. Any experience or opinions on which is 
best?

Here are links to both.
http://gnuarm.com/
http://www.codesourcery.com/gnu_toolchains/arm.html


>I have found 2 GCC ports for ARM. Any experience or opinions on which is >best? > > 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 Tantos wrote:
>> I have found 2 GCC ports for ARM. Any experience or opinions on >> which is best? >> >> 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?
"Not Really Me" <scott@exoXYZtech.com> wrote in message 
news:326aqjF3if9bfU1@individual.net...
> Andras Tantos wrote: >>> I have found 2 GCC ports for ARM. Any experience or opinions on >>> which is best? >>> >>> 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
"Not Really Me" <scott@exoXYZtech.com> wrote in message
news:326aqjF3if9bfU1@individual.net...
> Andras Tantos wrote: >>> I have found 2 GCC ports for ARM. Any experience or opinions on >>> which is best? >>> >>> 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
In news:326ig9F3h5ra7U2@individual.net,
Andras Tantos <andras_tantos@yahoo.com> typed:
> "Not Really Me" <scott@exoXYZtech.com> wrote in message > news:326aqjF3if9bfU1@individual.net... >> Andras Tantos wrote: >>>> I have found 2 GCC ports for ARM. Any experience or opinions on >>>> which is best? >>>> >>>> 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? >> > > 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
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
>> 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 > > 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.
Do you have any figures for the actual floating point performance on, say, a 60MHz ARM7? Andrew
In news:pZmdnbH2fZdTASPcRVnyvg@eclipse.net.uk,
Andrew Jackson <alj@nospam.com> typed:

>>> 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 >> >> 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. > > 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. Karl Olsen
Karl

>> >> 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
On Monday, December 13, 2004 at 4:12:22 PM UTC+1, Thomas Carley wrote:
> I have found 2 GCC ports for ARM. Any experience or opinions on which is > best? > > Here are links to both. > http://gnuarm.com/ > http://www.codesourcery.com/gnu_toolchains/arm.html
Hello, do you know where I can find machine codes by math function, exactl big integers ? Thanks Michal matej755@seznam.cz