Hallo, ich würde gerne ein zweidimensionales Array mit 2048 Bytes anlegen. Wenn ich es einfach so mache geht es nicht: int logo[8][128] = {........}; Diese Fehlermeldung erhalte ich: ..\src\obj\main_projekt.o: Link Error: Could not allocate section .ndata, size = 2048 bytes, attributes = data near Link Error: Could not allocate data memory Vlt. weiß jemand weiter! Gruß Holgers
Prozessor/Controller? Evtl. Schaltplan?
1 | int logo[8][128] = {........}; |
Hast du nur die beiden geschweiften Klammern oder im Feld auch welche? Hau mal den ganzen Code hier rein (wenn es viel Code ist, mach's als Anhang), so wie oben beschrieben kann man sich das schlecht vorstellen, wo genau jetzt der Fehler liegt... Ralf
Hm, welches Memory Model fährst du? Weil wenn small (siehe [1]), passt es scheinbar nicht in den RAM-Speicher < 0x2000.Versuch mal die Lösung von [1], also die Variable mit __attribute__((far)) versehen. BTW, du willst 1024 Byte in einen µC mit 2048 Byte RAM laden? Ganz sicher? Du brauchst auch noch so etwas wie einen Stack ^^. Ich kenn den C30 nicht (bin mehr im AVR Lager beheimatet), aber versuch mal das Array im Flash zu platzieren. lg Mobius [1] http://www.microchip.com/forums/tm.aspx?m=138542
Holgers schrieb:
> int logo[8][128] = {........};
2KB Daten und ein Controller mit 2KB RAM. Das wird nix.
>So ich habe mal den Code rangehängt,
Keiner deiner Werte im Array ist int.
Versuchs mal mit unsigned char.
Und dann vieleicht noch mit const rom unsigned char,
da logo ja wohl kaum im RAM liegen soll.
So gehts jedenfalls beim C18.
Job danke für die Antworte habe es jetzt hinbekommen, ich programmiere nicht allzu oft deswegegen meine Planlosigkeit.^^ Gruß Holgers
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.