Forum: Compiler & IDEs newlib-nano gcc-arm


von Matthias S. (jimbo4711)


Lesenswert?

Hallo,

ich nutze die gcc-arm-embedded-Toolchain in Eclipse um Programme für 
Mikrocontroller zu erstellen.

Leider musste ich feststellen, dass der erzeugte Code doch um ein 
vielfaches größer ist, als bei anderen Entwicklungsumgebungen.

Kann es sein, dass es an der newlib liegt und ich die newlib-nano 
(nano.specs) nutzen sollte?

Wenn ja, wie kann ich diese Lib einbinden, bzw. darauf verlinken?

Danke schon mal im Voraus!

von Dr. Sommer (Gast)


Lesenswert?


von Matthias S. (jimbo4711)


Lesenswert?

Danke für den Hinweis, habe die Lib jetzt eingebunden, allerdings ist 
der Code immer noch etwa doppelt so groß als z.B. bei uVision von Keil 
(mit MicroLib)...

Gibt es da noch Stellen an denen man "drehen" kann oder liefert die 
newlib-nano einfach kein besseres Ergebnis?

Für weitere Infos/Erfahrungsberichte wäre ich sehr dankbar!

von Dr. Sommer (Gast)


Lesenswert?

Disassemblisiere den Code und sieh selbst was da so gierig ist. Aufs 
geratewohl herumfrickeln ist nicht sehr zielführend.

von Heiner (Gast)


Lesenswert?

Compileroptimierung wie gesetzt? -Os?

von Matthias S. (jimbo4711)


Lesenswert?

Ja, Compileroptimierung -Os, außerdem -ffunction-sections 
-fdata-sections -fnobuiltin, wobei letzteres keine Änderung bringt.

Außerdem sind die Linkerflags -specs=nano.specs -lm -lc -lnosys gesetzt.

von Dr. Sommer (Gast)


Lesenswert?

Widergabe-Leistung: 5.0. Nochmal versuchen.
http://www.mikrocontroller.net/articles/ARM_GCC#Code-Gr.C3.B6.C3.9Fe_optimieren 
lesen und flags übernehmen.

von Jim M. (turboj)


Lesenswert?

Ist das Linkerflag --gc-sections gesetzt?

von Adib (Gast)


Lesenswert?

über welche Codegröße reden wir denn?

Bei kleinen Codegrößen kann leicht ein permanenter Overhead fatal in den 
Vergleich einfliessen.

Ich optimiere auf Speed nicht auf Größe. Solange der Code in den 
internen Speicher passt ... ;-)

-finline-functions - tut eher Code vergrößern, da Code ge-inlined wird

Die Compileroption "-ffunction-sections -fdata-sections" und die Linker 
Option "-Wl,--gc-sections" werfen nicht benutzten Code/Variablen aus dem 
Output heraus.

Adib.
--

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.