Forum: Mikrocontroller und Digitale Elektronik Leeres Programm schon 2490 byte groß?


von C. D. (dusti)


Angehängte Dateien:

Lesenswert?

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

von holger (Gast)


Lesenswert?

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.

von Vlad T. (vlad_tepesch)


Lesenswert?

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

von Vlad T. (vlad_tepesch)


Lesenswert?

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?

von holger (Gast)


Lesenswert?

>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

von holger (Gast)


Lesenswert?

>Wozu soll er ein leeres Programm posten?

Warum nicht? Am besten das komplette
compilierbare "leere" Programm zum
verifizieren seiner merkwürdigen Probleme.

von Marco L. (lehmi)


Lesenswert?

Die printf und math Bibliothek brauchen halt einiges an Speicher, 
kommentier die doch mal im Makefile aus.

von Oliver J. (skriptkiddy)


Lesenswert?

Du linkst die float-lib für printf mit.
Eventuell könnte es daran liegen.

von stru_aus (Gast)


Lesenswert?

hört sich nach cpp an - einfaches c ist evtl kleiner :)

von Vlad T. (vlad_tepesch)


Lesenswert?

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

von Peter D. (peda)


Lesenswert?

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

von Willi (Gast)


Lesenswert?

C. Dust schrieb:
> Leider ist das
> hexfile immer noch 2490 byte groß.

Die Größe dieser Datei entspricht aber nicht der Programmgröße.

von C. D. (dusti)


Lesenswert?

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
Noch kein Account? Hier anmelden.