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.
>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.
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.
>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?
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.
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;
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.