float Berechnung erzeugt Compiler-Fehler??

Gast #467885
Lesenswert?

Hallo,
ich möchte in meinem Programm die Genauigkeit der Berechnung erhöhen und 
habe folgende Zeilen eingefügt:

float c0 = 0;
.
.
c0 = Proh * 0.534f;

Allerdings bringt mir der Compiler folgende Fehlermeldung:

Linking: main.elf
avr-gcc -mmcu=atmega8 -I. -g   -Os -funsigned-char -funsigned-bitfields 
-fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=main.o 
-std=gnu99 -Wp,-M,-MP,-MT,main.o,-MF,.dep/main.elf.d main.o ea_dog.o 
menu.o   --output main.elf -Wl,-Map=main.map,--cref    -lm
C:\Programme\WinAVR\bin\..\lib\gcc\avr\3.4.3\..\..\..\..\avr\bin\ld.exe: 
region text is full (main.elf section .text)
make.exe: *** [main.elf] Error 1

Wenn ich die Berechnung auskommentiere gibt es kein Problem.
Kann mir jmd. helfen??

thx Daniel
Moderator Persönliche Seite #467920
Lesenswert?

Daniel Held wrote:

> So habe ich keine Chance?

Du kannst ja gucken, was sonst noch alles Platz vermplempert.

> Betrifft das denn kompletten Code für den Flash oder nur einen
> bestimmten Raum?

Was soll ,,ein bestimmter Raum'' denn sein?  Flash ist flash.

Was mir immer ganz hilfreich war für die Analyse:

avr-nm --size-sort --print-size <name of your ELF file>

Alle Symbole mit einem "T" (globale Funktionen), "t" (statische
Funktionen) und letztlich auch mit einem "D" oder "d" (globale bzw.
statische Daten, die haben ihre Initialisierungswerte im ROM)
interessieren dich hier.  "B" und "b" kannst du ignorieren, die
brauchen ausschließlich RAM (werden beim Start mit 0 initialisiert).

Die erste Spalte ist die Adresse des Symbols (die interessiert dich
nicht nennenswert), die zweite ist die Größe (beides hexadezimal).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren