mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LPC935, uVision 3


Autor: Albert K. (buzzed)
Datum:

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

Autor: Matthias K. (matthiask)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>data=196.1

Schon reichlich interner RAM belegt, Stack? Hast Du den internen RAM auf 
256 eingestellt?

Ab welcher exakter Codegröße tritt das Problem auf? Bis 2k kann die 
Demoversion. Lizenzversion sollte da kein Problem haben.

Autor: Albert K. (buzzed)
Datum:

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

Autor: Matthias K. (matthiask)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Error L107: Address Space Overflow
>Space: Data
>Length: 0068H

Du belegst wie schon vermutet zu viel interen RAM. Der hat nur 256 Byte. 
Versuch mal paar Variablen in den XDATA auszulagern, Bsp.:

char xdata my_variable;

Hoffentlich hast Du bei den Options auch den richtigen µC eingestellt?

Autor: Albert K. (buzzed)
Datum:

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

Autor: Matthias K. (matthiask)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Datenblatt:
XDATA Auxiliary (‘External Data’) on-chip memory that is accessed
using the MOVX instructions (P89LPC935/936)512

Der hat internen XDATA von 512 Byte.

Variablen kommen so in den XDATA:

char xdata my_variable;

Autor: R. W. (quakeman)
Datum:

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

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.