LPC935, uVision 3

OP #1628192
Lesenswert?

Hallo Leute

Ich bin kürzlich auf ein Problem gestoßen und zwar schreibe ich gerade 
ein etwas umfangreicheres Programm für meinen Phillips NXP LPC 935 (oder 
936 falls dies beim Problem helfen könnte) und ich kann dieses ab einer 
gewissen Größe nicht mehr kompilieren. (bekomme kein Hex-File mehr)

Ich bekomme folgende Fehlermeldung.

Program Size: data=196.1 xdata=0 code=2589
Target Not Created

Im Moment schaffe ich es noch den Code kleiner zu machen in dem ich alle 
Felder usw. im Codespeicher ablege, dass Problem ist aber, dass das 
Programm noch lange nicht fertig ist.

Meine uVision Version ist: C51v805 (lizensiert)

Ist es möglich irgendwie diese Kompilier beschränkung aufzuheben oder 
kann man dagegen etwas unternehmen?

Hoffe auf Antworten

MfG Alber K.
OP #1628237
Lesenswert?

Hey, danke für die Antwort

aber ich verstehe nicht ganz was du meinst :)
Ich bin nicht soo erfahren was RAM, Stack usw. anbelangt

also code = 2325 funktioniert noch und darüber gehts dann nicht mehr.
Ich habe mein Programm lizensiert und es steht

PK51. Prof. Developers KIT

Bzw. wo stell ich den internen RAM ein bzw. geht das überhaupt mit 
meinem Stick?

Es kommt halt:

Error L107: Address Space Overflow
Space: Data
Length: 0068H

MfG
Albert K.
OP #1628279
Lesenswert?

Ahh das erklärt einiges danke :)

8K Bytes ISP/IAP Flash, 512 Bytes Data EEPROM,
256 Bytes RAM

da stehts in der Beschreibung und ja ich hab das ganze Projekt für den 
LPC935 erstellt.

Aber ist xdata nicht für externen speicher?

ich habs bis jetzt mit "code char" oder "code unsigned char" versucht.

geht dann xdata auch für mich?
bzw wie kann ich was in den Flash speichern, weil der wäre ja um einiges 
größer.

MfG

Alber K.
#1631663
Lesenswert?

Albert K. schrieb:
> ich habs bis jetzt mit "code char" oder "code unsigned char" versucht.

Also mit dieser Syntax kommst du sowieso nicht weit, denn das Wort 
"code" hat bei Variablen nichts verloren. Dies benutzt du nur bei 
Konstanten die nachträglich nicht mehr verändert werden können.
Entweder du machst "unsigned char", wobei der Compiler selber versucht 
den Speicherbereich festzulegen anhand der Projekteinstellungen. Oder du 
sagst ihm explizit, in welchem Bereich die Variablen liegen sollen. Z.B. 
"unsigned char data" oder "unsigned char idata" oder "unsigned char 
xdata" (oder ohne unsigned davor). Die internen 256 Bytes Ram sind 
eingeteilt in 128 Bytes data/idata und 128 Bytes nur idata. Letzteren 
kannst du dann nicht per "data" ansprechen.
Du solltest bei deinem Projekt auch darauf achten, dass du die Code Rom 
Einstellungen in den Projekteigenschaften auf "compact" stellst und 
nicht auf "small". Ebenfalls muss "use on-chip xram" aktiviert sein.
Du solltest dir das Speichermodell des Controllers noch mal genau 
anschauen, damit du verstehst, wie und wo der Speicher verteilt ist und 
du ihn benutzen kannst.

Ciao,
     Rainer

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren