GP2X Ads, Rvct, Keil And Other Compilers


dwelch

Member
Joined
Jul 7, 2006
Messages
119
This may be old news but I just noticed that ARM purchased Keil.

I also just noticed the Keil ARM demo download. It offers a gcc 3.3.1, Keil's ARM compiler. And RVCT 3.0.

As with RVCT 2.0 I think they are encrypting the binary so it cannot be used to actually run on hardware, I could be wrong. The objects have ORC near the front then I see ELF a little deeper in, perhaps there is an elf in there. This is really the compiler I am interested in evaluating.

Keil's does not appear to be protected, if nothing else it will disassemble listings for you which could be re-assembled (with some effort). Looks like it builds elf files, may have to try it out...

I used to have access to ARM SDT, ADS. An old Green Hills. And HI-TECH. And evaluated Metaware, RVCT 2.x. Unfortunately I dont think I have access to them anymore.

I have the keil demo, just requested Metaware, and just downloaded the HI-TECH arm demo (Which the last time I tried used a model like Keil is, fully functional but limited to a certain size binary).

I know that ARMs tools blow gcc(3.x) away, as do Metawares. ARM and Metaware were neck and neck. The GHS product I had was horrible, and they nickel and dime you to death, every time you pick up the phone to ask why the product you purchased doesnt work you find you have to pay another $1200 for yet another widget. Then another $1200 to connect the second widget to the main product. Then another $1200, and another and another until you give up or finally get connected to your target. (Note that after a year some of the widgets die and you have to renew them at the same price). the only good thing about GHS, was they were BY FAR the easiest tool to go from zero to an embedded target of all the compilers I have used, gcc and arm included. No retarget files no syscalls files, none of that, very wysiwyg with ghs, at least one of their older ones.

Oh, and we cant forget good old Microsoft, their EVC++ was worse than gcc if I remember and EVC 3.x produced much better code than EVC 4.x, and this was after an incredible effort to get EVC code to run on something other than wince. Dont bother with MS eVC++

ANYWAY, is anyone else using something other than GCC, and what is your experience so far with it on this platform?

David
 
I had a temporary scare there. Using the gcc331 from the Keil website that you can download with the arm demo. Produced a binary that ran 13% faster than gcc 4.1.1. That was with the caches and write buffer on. turn them off and compare the compilers head to head and gcc 4.1.1 was in fact faster.
 
I've played with GCC, Keil & IAR ARM compilers. Personally, I prefer GCC, as I simply don't have any problems with it.

With the Keil and IAR ARM compilers they offer more GUIness, as in compiler options are in dialog boxes, they come with a front end, etc, and they provide pre-written startup code/etc for various ARM cores rather than just "ARM7/ARM9".

The bad thing about the Keil and IAR compilers is that I've had problems with the optimiser in both - compiling code incorrectly, completely missing out chunks of code, etc. Also, it's usually a nightmare to try and use without the IDE as that's simply not the way your meant to use them. The IDE is also completely crap when compared to SlickEdit or VS2005/VAX.

So, in my experience, the Keil and IAR compilers can create faster code than GCC, but GCC seems to be able to be relied on more (and I'm including support in this - last time we sent a compiler bug report to IAR, it took them a whole 4 months before we received a newer version of the compiler with that bug fixed. Compare that to GCC.)
 
I tried the HI-TECH software ARM compiler today. Worked with it breifly in the past. They have made improvements, certainly in the demo version. To get the demo to build a GBA binary I had to hack the binary they made. Hmmm, actually the 9.12 demo has the same problem, the difference is I am using the gp2x now not the gba (they add an MSR in there like it or not, GBA didnt like it, gp2x doesn't mind). Unlike the big boys, gcc, arm, etc, where you have to work to get things removed from your binary. These guys appear to have a microcontroller based background/approach. You have to tell it to add things to your binary, like a c library, normally it only puts YOUR code in there, not a huge volume of libraries that you are not using. The difference between no optimizations and full optimizations was 22% (dhrystone 2.1), really not that much compared to gcc, here again. Keep It Simple Stupid.

Anyway, I had a fun evening with this compiler, not necessarily adopting it for day to day use, but not discarding it either. I have 19 days left on the demo, may have to try to do more with it.
 
cxzuk posted on Aug 4 2006 at 05:48 PM said:
Hi all,

I've used TCC (TinyCC) and love it. Unfortunatly, it does not support all of GCC's extentions but compiles ISOC99 standard code.

It has a sister compiler called "armcc", specific to ARM arch. Might be worth a try?

Otherwise check out the GCC ARM optimization options...

http://gcc.gnu.org/onlinedocs/gcc/ARM-Opti...tml#ARM-Options

Mike

Have you cross-compiled something with tinycc built for arm? I just tried and its looking for a _start, supposedly tcc -c hello.s will work, but doesnt seem to know arm asm. dont yet know if tcc -c hello.c -o hello.o made arm code or what (it should have made arm code as I built tcc for arm).

Anyway, just curious...And yes I have looked into tcc before, last time I was probably trying to port it to thumb for the gba and not have it build binaries but text because I wanted to modify the backend, much harder to do if the backend only makes bits and bytes...I gave up and spent most of my time porting vbcc, but never made it 100% simple programs would compile but more complicated wouldnt.
 
Last edited by a moderator:
Back
Top