Forum: Mikrocontroller und Digitale Elektronik Hex erzeugen: AVR Studio viel größer als Arduino?


von Student (Gast)


Lesenswert?

Hi!

Folgendes Problem: Ich möchte von der normalen Arduino IDE langfristig 
auf AVR-Studio umsteigen, da mir dies mehr Möglichkeiten bietet.
Dennoch möchte ich am Anfang noch die allgemeine Arduino Library 
benutzen, einiges geht dadurch halt doch (noch) einfacher.
Diese habe ich nach einer Anleitung eingebunden.

Dies funktioniert auch soweit, und ich kann Programme mit normalen 
Arduino Befehlen wie z.B.
Serial.println("Hallo Welt");
ohne Fehler kompilieren. Library ist also richtig eingebunden.

Jetzt ist aber das Problem, dass die vom AVR-Studio erzugten Hex Dateien 
VIEL größer als die von der Arduino IDE erzeugten IDE sind.

Konkret sind das z.B. 3,6kbytes von der Arduino IDE und 9,5kbytes von 
AVR Studio beim Arduino Beispiel 
http://arduino.cc/en/Tutorial/ReadASCIIString

An was kann das liegen? Wäre für jede Antwort dankbar!

Grüße!

von user (Gast)


Lesenswert?

Compiler Optimierung vergessen? "-Os"

von Student (Gast)


Lesenswert?

Hi!

Bei den "Project Properties" sind under Toolchain sowohl bei AVR/GNU C 
Compiler als auch bei AVR/GNU C++ Compiler "Optimize for size (-Os)" 
eingestellt, daran kanns also nicht liegen.

Grüße!

von AVR (Gast)


Lesenswert?

Floating Point Variante von printf gelinkt?

von Student (Gast)


Lesenswert?

Vorab schonmal danke für die schnelle Antwort!

Ich weiss jetzt aber leider nicht genau, was es mit "Floating Point 
Variante von printf gelinkt?" auf sich hat.

Habe über google die FAQ hier gefunden. Werde da aber auch nicht schlau 
daraus, dort gibt es bloß Hilfe zum Aktivieren dieser floating Point 
Variante.

Irgendwelche Tipps wie man feststellen kann ob das aktiviert ist?


Grüße!

von Bananen Joe (Gast)


Lesenswert?

Debuging aktiviert?
Dann wird das Compilat auch größer!
Auf Release stellen, dann sollte es kleiner werden, weil die 
Debug-Informationen fehlen.

von Wolfgang (Gast)


Lesenswert?

Student schrieb:
> An was kann das liegen?
Lade doch mal die Hex-Files als Anhang hoch. So ist das wie 
Kaffeesatzlesen ohne Kaffeesatz.

von Student (Gast)


Lesenswert?

Also, ich denke nicht, dass das Debugging aktiviert ist.
Ich erzeuge das Hex indem ich auf "Build" => "Build projektname" drücke.

Unter "Debug" ist der Eintrag "Stop Debugging" ausgegraut. Dann sollte 
ja das Debugging nicht aktiv sein, oder?

Hätte das aktivierte Debugging überhaupt einen Einfluss auf die Größe 
des Hex? Im Hex ist doch der reine Maschinencode, oder?

Grüße!

von Peter D. (peda)


Lesenswert?

Student schrieb:
> Konkret sind das z.B. 3,6kbytes von der Arduino IDE und 9,5kbytes von
> AVR Studio beim Arduino Beispiel
> http://arduino.cc/en/Tutorial/ReadASCIIString

Das läßt sich mit AS nicht übersetzen, das sind ja haufenweise Arduino 
Aufrufe. Vermutlich linkst Du da ne riesige Arduino-Lib hinzu und das 
kostet eben.

Und auf dem vorprogrammierten Arduino ist die Lib ja bereits im Flash 
und wird nur aufgerufen. Daher der Größenunterschied.

von Student (Gast)


Lesenswert?

hmm ok, das könnte natürlich sein.
Hab gerade nachgeschaut, die Arduino Library hat über 300kb.
Könnte natürlich sein, dass da dann einiges an Speicher dafür draufgeht.

Werde also den Code nochmal in C neuschreiben.
Gute Übung, wa? ;-)

Grüßle...

von Karl (Gast)


Lesenswert?

Peter Dannegger schrieb:
> Und auf dem vorprogrammierten Arduino ist die Lib ja bereits im Flash
> und wird nur aufgerufen. Daher der Größenunterschied.

Schwachsinn. Da ist auch nur der Bootloader drauf.

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.