gcc vs. mbed online (ARM compiler v5)

Gast #4408282
Lesenswert?

Ich habe ein Cortex-M3 Testprojekt im mbed compiler, das enthält ein 
printf() und das FatFS von ChaN. Der mbed Online Compiler erzeugt 27,9 
kB Code, der gcc 4.9.3 macht aus dem gleichen Projekt 38 kB, also über 
10 kB mehr. Optimierung steht auf -Os, -O3 erzeugt gleich viel und 
kleine Optimierungen noch mehr. Kann das sein das der online Compiler 
(soll ein ARM compiler Version 5 sein) soviel besser optimiert? Oder 
gibt es weitere Optimierungsschalter im gcc die man zusätzlich zu -Ox 
setzen muss?
Wenn ich das Projekt nur mit einem SPI Ojekt erzeugt statt dem 
Filesystem verringert sich die Grösse auf 18,5 kB, laut 
http://elm-chan.org/fsw/ff/en/appnote.html sollte der Code für einen 
Cortex-M3 10,6 kB gross sein, da liege ich also auch deutlich drüber.
Gast #4408295
Lesenswert?

Die NewlibNano ist auch eingestellt. Aber wo ich das gerade kontrolliert 
habe sehe ich das ich noch 'printf float support' aktiviert habe. Ohne 
bin ich jetzt bei 30,6 kB.

Nachtrag:
habe ein float in den Code reingepackt und im printf übergeben. Der Code 
im Online compiler wird nicht grösser, bleibt bei 27,9 kB.
Gast #4408302
Lesenswert?

vom Online compiler bekomme ich kein mapfile, nur ein bin was direkt in 
den Controller geladen wird. Das gcc mapfile habe ich schonmal 
durchgesehen, das ist aber mühselig viel, jedenfalls nichts sehr 
auffäliges.
Gast #4408937
Lesenswert?

habe mich gerade durch langen von Dr. Sommer verlinkten Thread gekämpft. 
Die genannten Optimierungen waren schon eingeschaltet, auch die lto. Ich 
finde nur den Unterschied von ca. 30 % recht drastisch, auch wenn die 
Meinungen über die Optimierungsqualität vom gcc auseinander gehen.
Gast #4408958
Lesenswert?

Paul schrieb:
> Aber
> sei froh, dass du keinen M0 benutzt, da sieht's teilweise noch
> schlechter aus.

Stimmt, da kommt die Frage auch ursprünglich her, ich spiele aber gerade 
wieder mit meinem LPC1347 und habe versucht das da nachzuvollziehen.

http://developer.mbed.org/questions/61916/LPC1114FN28-mbed-online-vs-LPCXpresso/

Da gab es jetzt noch eine Aufklärung zum ARM-CC, ist wohl identisch mit 
dem Keil. Ich habe die freie Version 5 mit dem 32k Limit, der (nicht) 
erzeugte Code lag bei 35 kB. Mit den am Ende genannten Optimierungen 
schrumpft der Code wie im Online Compiler auf ca. 28 kB. Die Mühe mit 
der 4er Version habe ich mir nicht gemacht, das Projekt wurde auch vom 
5er ohne Fehler kompiliert. Nur die Microlib erzeugt ein paar undefined 
symbols, die habe ich auch wieder abgeschaltet, da könnte man also noch 
mehr sparen.

Gut das der LPC1347 64 kB Flash hat, da kann ich noch ein bisschen beim 
gcc bleiben.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren