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
Nix Compiler: >Linking: main.elf Linker... >region text is full Das ist der Fehler...(was der bedeutet, kann ich aber auch nicht sagen).
fieser Rahul (auch Oskar genannt) wrote:
> (was der bedeutet, kann ich aber auch nicht sagen).
Dass kein Platz mehr für den großen Gleitkomma-Code im ATmega8
vorhanden ist.
Das nenn ich schnelle Hilfe. So habe ich keine Chance? Betrifft das denn kompletten Code für den Flash oder nur einen bestimmten Raum?
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).
>Dass kein Platz mehr für den großen Gleitkomma-Code im ATmega8 >vorhanden ist. Und wieder was gelernt. Danke!
Wenn das deine einzige float Berechnung ist: Was rechnest denn du da? Das kann man doch sicherlich auch mit Fixed Point Arithmetik machen. -> Die ganze Floating Point Library fällt wieder weg.
Arbeitest Du mit AvrStudio? Dann könnte es hilfreich sein, wenn Du bei den Linker Optionen die libm.a hinzufügst, (falls nicht schon gemacht). Diese belegt deutlich weiniger Speicher als die generische GCC libm. MfG Peter
Oups, tatsächlich, da steht ja: -lm ...da hatte ich wohl Tomaten auf den Augen! ;o))
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.