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
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.
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
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.
Hallo Jörg, vielen Dank für deine Antworten... Grüße Tommy
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.