Forum: Compiler & IDEs Sourcecode zu groß?


von Martin (Gast)


Lesenswert?

Hallo,

ich programmiere einen AtMega88. Nun kommt beim Compilieren folgende
Meldung:

> "make.exe" all
avr-gcc -g -Wall -O0 -mmcu=atmega88    -c -o master.o master.c
avr-gcc -g -Wall -O0 -mmcu=atmega88  -Wl,-Map,master.c.map -o
master.c.elf master.o
C:\WinAVR\bin\..\lib\gcc\avr\3.4.3\..\..\..\..\avr\bin\ld.exe:
region text is full (master.c.elf section .text)
make.exe: *** [master.c.elf] Error 1

Bedeutet diese, daß der Sourcecode zu groß ist? Wenn ich ein paar
Sachen im Quellcode weg lasse, dann geht es (dann hat das erzeugte
HEX-File 23.025 Bytes).
Wie kann man sehen, wie viel Speicher für den Prozessor noch frei ist?

Martin

von Fritz G. (fritzg)


Lesenswert?

mit avr-size

von Martin (Gast)


Lesenswert?

avr-size.exe hab ich gefunden. Wenn ich diese doppelklicke geht kurz ein
Fenster auf und wieder zu. Scheint ein DOS-Programm zu sein.

Was muß ich machen, um die Größe anzuzeigen?


Hab nun mal die erzeugte BIN-Datei angeschaut. Wenn das compilieren
klappt ist die größe 7.740 Bytes. Der Speicher des AtMega88 hat ein
8k-Flash. Ich denke es liegt daran.... Shit happens...

von Martin (Gast)


Lesenswert?

Noch eine Frage:

Ich hatte im Makefile Optimize auf "-00" eingestelt, da der Compiler
sonst Debugvariablen entfernt. Mit der folgenden Einstellung läßt sich
das Projekt compilieren:

OPTIMIZE       = -O2

Die Binärdatei hat dann 4.680 Bytes. Wo finde ich eine Info, welche
Werte ich bei "Optimize" eintragen kann und welche Auswirkung diese
hat?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

In der avr-libc Doku und im GCC-Manual.

Kurzfassung: -Os ist meistens die sinnvollste Wahl.

Gewöhn' dich einfach dran, den optimierten Code zu debuggen.  Der
Compiler braucht halt nicht für alles, was du als variablenwürdig
ansiehst, selbst auch eine Variable.

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.