www.mikrocontroller.net

Forum: Compiler & IDEs float Berechnung erzeugt Compiler-Fehler??


Autor: Daniel Held (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: fieser Rahul (auch Oskar genannt) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nix Compiler:
>Linking: main.elf

Linker...

>region text is full
Das ist der Fehler...(was der bedeutet, kann ich aber auch nicht sagen).

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Daniel Held (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das nenn ich schnelle Hilfe.
So habe ich keine Chance?
Betrifft das denn kompletten Code für den Flash oder nur einen 
bestimmten Raum?

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: unbeschreiblicher Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Dass kein Platz mehr für den großen Gleitkomma-Code im ATmega8
>vorhanden ist.

Und wieder was gelernt.
Danke!

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Daniel Held (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK, danke nochmal - werd mein Glück versuchen.

Autor: Peter S. (psavr)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Linker-Kommandozeile hatter doch gepostet...

Autor: Peter S. (psavr)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oups, tatsächlich, da steht ja: -lm
...da hatte ich wohl Tomaten auf den Augen!  ;o))

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.