Char-Pointer Vergleich bringt Error

Gast #5612
Hi!

Und wieder mal ein Fehler bei dem ich nicht weiterkomme:

avr-gcc -c -g  -Os -Wall -Wstrict-prototypes -Wa,-ahlms=logpro.lst 
-mmcu=at90s2313 -I. logpro.c -o logpro.o
avr-gcc  logpro.o   -Wl,-Map=logpro.map,--cref -lm -mmcu=at90s2313 -o 
logpro.elf
D:\avrgcc\bin\..\lib\gcc-lib\avr\3.0.2\..\..\..\..\avr\bin\ld.exe: 
region text is full (logpro.elf section .text)
make: *** [logpro.elf] Error 1

Den Error zeigt der Compiler mir an, sobald ich folgenden Code im 
Programm stehen habe, der aber syntaktisch korrekt sein müsste.

while(gpsptr1 != gpsptr2)
{
  ...
}

gpsptr1 und gpsptr2 sind folgendermaßen deklariert und definiert:

char *gpsptr1, *gpsptr2;

gpsptr1 = strchr(gpsstring, ',');
gpsptr1++;
gpsptr2 = strchr(gpsptr1, ',');

Ich hoffe es kann mir einer weiterhelfen ...
Gast
> ld.exe: region text is full (logpro.elf section .text)
heißt das nicht, daß der Speicher voll ist?

Mach mal:
make size
oder avr-size --help

Schmittchen.
Gast
>> ld.exe: region text is full (logpro.elf section .text)
>heißt das nicht, daß der Speicher voll ist?

In der Tat - Folgendes habe ich im Usenet dazu noch gefunden:

This error means just what it says -- your text section is full,
i.e. the code space of the AVR is all used up.

Some suggestions:

1. Try to compile with -Os (to optimize for size)

2. Reduce your code size:
   a. Don't use floating point
   b. Minimize the use of initialized data
   c. Avoid using global or static variables (I've found that copying
      a global to a local variable in a function, doing my operations
      on it and then copying back will drastically reduce code
      size. It seems avr-gcc 3.0.X treats every global as 'volatile').
   d. Use smaller algorithms
   e. Remove features

3. Get an AVR with larger flash

--

Punkt 1 habe ich vorher auch schon gemacht. Die Punkte unter 2 habe ich 
im wesentlichen auch gemacht (bis auf das entfernen von Features ... ich 
kann nämlich keine entfernen, im Gegenteil das Programm ist noch 
nichtmal vollständig :P)

Daher bleibt wohl nichts anderes übrig auf einen anderen AVR zu 
verwenden. Derzeit verwende ich den AT90S2313. Mal schauen was wir in 
unsere Box alternativ bauen können, mit mehr Flash.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 24 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.