Hallo Zusammen, Verwende einen ATmega88 mit 8kb Programmspeicher. Jetzt hab ich plötzlich beim Brennen die Meldung bekommen, das der Speicher voll ist. Kann das jedoch nicht ganz nachvollziehen, da der Code bissher noch recht übersichlich ist. Um zu gucken was mir den Speicher "frisst" habe ich mal nach und nach alles auskommentiert. Das Hexfile wurde dann zwar immer kleiner, jedoch komm ich nicht unter 2490 Byte. Bin jetzt so weit gegangen, das ich ein neues Projekt erstellt habe worin nur die main() und eine while(1) steht, sonst nix. Leider ist das hexfile immer noch 2490 byte groß. Wie kann das sein ? Kann das am Makefile liegen ? Ich verwende eclipse mit den avr dude als programmer. Viele Grüße Christian
Gast
#2270445
Ein makefile ist kein Programm. Was soll man damit anfangen? Hör auf floats zu benutzen dann wird dein Programm auch kleiner. Nur mal so geraten.
also ich weiß nicht, ob es an meinen äußerst bescheidenen makefile-skillz liegt, aber ich kann nirgends einen schalter für die Optimierung erkennen
holger schrieb: > Ein makefile ist kein Programm. Was soll man damit anfangen? > Hör auf floats zu benutzen dann wird dein > Programm auch kleiner. Nur mal so geraten. Wozu soll er ein leeres Programm posten?
Gast
#2270452
>also ich weiß nicht, ob es an meinen äußerst bescheidenen >makefile-skillz liegt, aber ich kann nirgends einen schalter für die >Optimierung erkennen OPT = s
Gast
#2270456
>Wozu soll er ein leeres Programm posten?
Warum nicht? Am besten das komplette
compilierbare "leere" Programm zum
verifizieren seiner merkwürdigen Probleme.
Die printf und math Bibliothek brauchen halt einiges an Speicher, kommentier die doch mal im Makefile aus.
Du linkst die float-lib für printf mit. Eventuell könnte es daran liegen.
Gast
#2270479
hört sich nach cpp an - einfaches c ist evtl kleiner :)
holger schrieb: > OPT = s ok, übersehen, hab direkt nach -O[s123] gesucht Marco L. schrieb: > Die printf und math Bibliothek brauchen halt einiges an Speicher, > kommentier die doch mal im Makefile aus. eigentlich sollte der linker doch aber nicht benutzte funktionen rausschmeißen, oder nicht? man könnte nochmal -ffunction-sections probieren, ich meine aber, dass sollte auch so gehen, in den avr-studio makefiles steht das sonst ja auch nicht drin
Du linkst das float printf dazu. Ohne sinds 76 Byte:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
Peter
Gast
#2270819
C. Dust schrieb: > Leider ist das > hexfile immer noch 2490 byte groß. Die Größe dieser Datei entspricht aber nicht der Programmgröße.
Hallo nochmal, Vielen Dank für die superschnelle Hilfe! Das makefile verwende ich schon eine Weile für einen mega 32. Ist mir da bestimmt nur nicht aufgefallen,da der Speicher hier ja viel größer ist. Wenn ich wie beschrieben die float libary auskommentiere ist mein leerer Code 76 Byte groß. :-) Aber ich dachte bisher eigentlich auch das der linker nicht verwendete Funktionen usw weglässt. Naja,dann danke nochmals für die Hilfe, jetzt komme ich erst mal weiter. Viele grüße Christian
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.