Codegröße WinAVR vs. AVR Studio (mit gcc)

OP #496729
Lesenswert?
• ▲
▼
Hallo,

ich habe bisher kleiner Projekte mit dem WinAVR (mit dem Notepad und 
angepasstem Makefile) programmiert. Aus Neugierde habe ich ein bereits 
getesteten Quellcode direkt in ein GCC-Projekt kopiert und compiliert. 
Wie zu erwarten, gabs keine Probleme.

Beim Vergleich der Hex-Files ist mir aufgefallen, dass das 
WinAVR-Hex-File nur ca. halb zu groß (5,47kB) ist, wie das GCC-AVR-File 
(11,7kB). Ich habe unter AVR-Studio die gleiche Optimierung (-s) 
eingestellt und habe keinen richtigen Ansatz, welche Optionen ich noch 
anpassen könnte/sollte.

Hat jemand eine Idee?

Grüße
Tommy
Moderator Persönliche Seite #496761
Lesenswert?
• ▲
▼
Tommy Müller wrote:

> Beim Vergleich der Hex-Files ist mir aufgefallen, dass das
> WinAVR-Hex-File nur ca. halb zu groß (5,47kB) ist, wie das
> GCC-AVR-File (11,7kB).

Was ein Widerspruch in sich ist: beides sind vom AVR-GCC erzeugte
Files (und zwar sogar von exakt dem gleichen Compiler -- AVR Studio
benutzt den von WinAVR installierten).

> Ich habe unter AVR-Studio die gleiche Optimierung (-s) eingestellt
> und habe keinen richtigen Ansatz, welche Optionen ich noch anpassen
> könnte/sollte.

Naja, erst einmal ist die Größe des Hexfiles nicht entscheidend,
sondern die tatsächliche Größe des Codes.  Das Hexfile hat Overhead.

Zweitens, bist du dir ganz sicher, dass du im AVR Studio die
Optimierung angepasst hast?  Dort würde ich es zuerst vermuten, da die
dummerweise mit einer Voreinstellung von -O0 (null) daher kommen.

Drittens, Schuss ins Blaue: du benutzt irgendwelche
Gleitkommaoperationen, linkst aber nicht gegen -lm.  Auch das ist
wieder etwas, was AVR Studio bei den Voreinstellungen ,,vergessen''
hat.  Wackele durch alle Menüs durch und füge libm.a zu den
Bibliotheken hinzu.
OP #496767
Lesenswert?
• ▲
▼
Hallo Jörg,

vielen Dank für die schnelle Antwort. Mir war schon klar, dass ich unter 
AVR-Studio mit dem GCC kompiliere. Und gerade deshalb fande ich es 
"sonderbar", dass unterschiedliche Dateigrößen des Hex-Files auftraten.
Die Optimierung hatte ich aber richtig eingestellt.

Dein "Blau-Schuss" traf (wie schon so oft :-) ins Schwarze...Kannst du 
mir etwas kongreter sagen, was du mit "gegen -lm" linken meinst?

Unter AVR-Studio kann ich zudem noch weitere "Link Objects" wählen:
libc.a
libm.a
libprintf_flt.a
libprintf_min.a
libscanf_flt.a
libscanf_min.a
Wo finde ich weitere Informationen, wo es sinnvoll ist, entsprechende 
"Link Objects" einzubinden?

Im Voraus schonmal vielen Dank...
Tommy
Moderator Persönliche Seite #496787
Lesenswert?
• ▲
▼
Tommy Müller wrote:

> Dein "Blau-Schuss" traf (wie schon so oft :-) ins Schwarze...Kannst
> du mir etwas kongreter sagen, was du mit "gegen -lm" linken meinst?

Dass auf der Linker-Kommandozeile ein -lm am Ende auftaucht.  Das
entspricht ausgeschrieben der Bibliothek libm.a.

> Unter AVR-Studio kann ich zudem noch weitere "Link Objects" wählen:
> libc.a

Die wird standardmäßig immer gelinkt, eine solche Auswahl ist also
nicht sinnvoll.

> libm.a

Die sollte man immer mit reinnehmen, aber AVR Studio hat das vergessen.

> libprintf_flt.a
> libprintf_min.a
> libscanf_flt.a
> libscanf_min.a

Das sind die eingeschränkten bzw. erweiterten Varianten von vfscanf()
und vfprintf().  Die haben aber als solche keinen großen Sinn, da sie
nur wirksam werden, wenn auch noch -Wl,-u,vfscanf mit auf der
Linker-Kommandozeile davor steht.  Das müsste man bei AVR Studio
irgendwo unter "custom options" unterbringen.  Wieder etwas, was AVR
Studio ,,vergessen'' hat: ein benutzerfreundlicheres Interface für die
printf- und scanf-Varianten.  Manche Leute auf avrfreaks.net empfehlen
daher, grundsätzlich den primitiven Makefile-Generator von AVR Studio
abzuklemmen und gleich Mfile zu nehmen.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.