Forum: Compiler & IDEs Problem mit uVision3 und AT89C5131(Speicherverwaltung?)


von Joban (Gast)


Lesenswert?

Hallo,

Ich arbeite jetzt schon seit anfang dieses Jahres mit oben genannten 
Dingen. Keil funktioniert einwandfrei.

Der Atmel uC hat unter anderem 1250 Byte Ram. Wenn ich mit Keil 
Compiliere zeigt er mir ja immer den aktuellen Status an wieviel 
Speicher belegt ist siehe hier:

Program Size: data=99.3 xdata=0 code=3047

Das bedeutet eigentlich das er knapp 100 Byte im Ram belegt hat und 3000 
Byte im Codespeicher.

Sobald aber der Ram-Speicher über ca. 110 Byte drüber geht bringt er mir 
folgende Fehlermeldung:


*** ERROR L107: ADDRESS SPACE OVERFLOW
    SPACE:   DATA
    SEGMENT: ?DT?TEST
    LENGTH:  003CH
*** ERROR L105: PUBLIC REFERS TO IGNORED SEGMENT
    SYMBOL:  CMD_BEFEHL
    SEGMENT: ?DT?TEST
Program Size: data=139.3 xdata=0 code=3047


Das ist der gleiche Quelltext wie oben, nur das ich ein Array etwas 
vergrößert habe und er somit mehr Speicherplatz reserviert. Das Programm 
hat vorher einwandfrei funktioniert.

Vielleicht hat schon jemand ein ähnliches Problem gehabt oder weis 
eventuell woran es liegen könnte?

Bin ziemlich ratlos.

Grüße
Joban

von Max (Gast)


Lesenswert?

>Der Atmel uC hat unter anderem 1250 Byte Ram. Wenn ich mit Keil
>Compiliere zeigt er mir ja immer den aktuellen Status an wieviel
>Speicher belegt ist siehe hier:

>Program Size: data=99.3 xdata=0 code=3047

Dein DATA Segement (interner RAM) ist voll. Eventuell geht der Linker 
von einen Standard 8051er aus, der nur 128Byte internen RAM hat.

Kuck mal, ob bei den Target-Optionen, bei BL51 Locate im Linker control 
String folgendes steht: RAMSIZE(256)

Hast Du den richtigen Controller eingestellt?

Wenn Du die 1250Byte Ram nutzen willst, musst Du Dein Array in den XDATA 
legen. z.B. mit:
1
char xdata mein_array[500];

Übrigens ist der AT89C5131 kein Controller, der was mit GCC zu tun hat!

von Joban (Gast)


Lesenswert?

aha danke :-)

hab eben auch gesehen das man das im keil einstellen kann das er das in 
den X-data bereich legt.

Hab mir gedacht in GCC kommt alles rein was mit C-Compilern zu tun hat. 
Hab mich da wohl geirrt :-)

Danke nochmal....

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.