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