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
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?
>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
>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.
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 | D:\WORK\AVR_C\FORUM>a |
2 | 4.3.3 |
3 | AVR Memory Usage |
4 | ---------------- |
5 | Device: atmega88 |
6 | |
7 | Program: 2940 bytes (35.9% Full) |
8 | (.text + .data + .bootloader) |
9 | |
10 | Data: 0 bytes (0.0% Full) |
11 | (.data + .bss + .noinit) |
12 | |
13 | |
14 | |
15 | D:\WORK\AVR_C\FORUM>a |
16 | 4.3.3 |
17 | AVR Memory Usage |
18 | ---------------- |
19 | Device: atmega88 |
20 | |
21 | Program: 76 bytes (0.9% Full) |
22 | (.text + .data + .bootloader) |
23 | |
24 | Data: 0 bytes (0.0% Full) |
25 | (.data + .bss + .noinit) |
Peter
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
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.