Forum: Compiler & IDEs region text is full


von Axel J (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Zusammen,
ich bekomme den folgenden Text beim Projekt Output:


avr-gcc -c -g -03 -Wall -Vstrict-prototypes -V}a-ahIms~st_ test. Ist 
-mmcu~at90s2333 -1. st_ test. c -o st_ test. st test.c: In function 
>fahrt:
test. c: 194: warning: control reaches end of non-void function st_ 
test. c: In function jog:
st_ test. c: 287: warning: control reaches end of non-void function
avr-gcc st test. o -V}L-H awst test. map,-cref -mmcu~at90s2333 -o st_ 
test. elf 
0*AVR000\RIN\..\Iib\gcc-Iib\avr\2.95.2\..\..\..\..\avr\bin\Id.exe: 
region text is full (sL test.elf section .text)
0X4VR000\RIN\MAKE.D<E: [sLtest.elf] Error 1

1)mit der Meldung "region text is full " kamm ich nichts anfangen. Was 
bedeutet sie und wie bekomme ich sie weg?

2) warning: control reaches end of non-void function
Wie vermeide ich diese Meldung?


Grüße Axel

von Sascha Weitkunat (Gast)


Lesenswert?

Zu deinem ersten Problem kann ich nichts sagen, zu der Warnung 
allerdings schon.

Du hast einige Funktionen die ein Int zurückgeben, du gibst allerdings 
garnichts zurück, dein "return xyz" fehlt einfach, und genau das 
vermisst auch der Compiler, denn er kommt an das Ende eine nicht-Void 
Funktion; gibt folglich keinen Wert zurück.

Wenn die Funktionen wirklich nichts zurück geben sollen benutze Void.

von Joerg Wunsch (Gast)


Lesenswert?

"region text is full" bedeutet einfach, daß zu viel Code für
den Controller produziert worden ist, der dann nicht mehr in
den Flash paßt.

von Axel J (Gast)


Lesenswert?

Hallo Sascha, Hallo Joerg,
vielen Dank für Eure Antworten. Nun klappt es.

Grüße Axel

von BAB (Kai K.) (Gast)


Lesenswert?

wenn du mit der aktuellen winavr version arbeitest solltest du die 
syntax dringends ändern wie z.b

outp(0xFF, DDRB);

IN:

DDRB = 0xff;

ansonsten bekommst du sehr wahrscheinlich in der nächsten winavr ausgabe 
probleme da befehle wie outp(), sbi(), cbi() usw. alt und aus der 
avrlibc heraus genommen werden bzw schon genommen wurden.

gruss,

BAB

von Matthias (Gast)


Lesenswert?

Hi

sbi() und cbi() fliegen raus?

Sollte man also
PORTD&=.. zum löschen
und
PORTD|=.. zum setzen
verwenden?

Es scheint ja entsprechend optimiert zu werden.

Matthias

von BAB (Kai K.) (Gast)


Lesenswert?

eric weddington wrote:
outp, inp are deprecated now.
outb, inb, sbi, cbi will be deprecated with the next release.
But they will all still be included in the next release, so you have a 
while to make the transition.

du kannst auch zur besseren code übersicht

PIND |= _BV(PD7);

schreiben. dahinter steckt nix anderes wie:

PIND |= (1 << PD7);

Gruss,
BAB

von BAB (Kai K.) (Gast)


Lesenswert?

datt macht da oben natürlich keinen sinn..ist nur nen beispiel...

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.