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!
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!
Disassemblisiere den Code und sieh selbst was da so gierig ist. Aufs geratewohl herumfrickeln ist nicht sehr zielführend.
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.
Widergabe-Leistung: 5.0. Nochmal versuchen. http://www.mikrocontroller.net/articles/ARM_GCC#Code-Gr.C3.B6.C3.9Fe_optimieren lesen und flags übernehmen.
ü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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.