Hallo, ich benutze den GCC Compiler und einen MSP430F169 ich habe mir ein Array angelegt: int test[2000]; nun bekomme ich die Fehlermeldung im Dateianhang. Es scheint ja zu groß zu sein. Aber ich habe noch über 45kB frei. Wo liegt mein Denkfehler? Oder liegt das am Compiler? Danke Euch.
Ich bin zwar kein C spezialist aber ich denke er will die daten im SRAM ablegen. Bei AVRs und C muss man PROGMEM verwenden um Daten im Flash zu speichern.
@OP: Tja, scheinbar hast du nicht so viel Platz für Variablen, da der MSP eine von-Neumann Architektur hat (der ganze Speicher im selben Addressraum) sollte ein "const int test[2000];" das Array in den flash verschieben -- dann kann man das aber nicht mehr so ohne weiteres ändern. hth. Jörg
Entschuldigung wegen dem Doppelpost, aber der Titel ist irreführend. Der GCC hat mit dem Limit in diesem Fall nichts zu tun - das GCC-Limit sollte dem Maximum eines "signed int" entsprechen d.h. 32767 Elemente beim AVR, beim MSP wahrscheinlich auch. gruß ~Jörg
Der 169 hat ja nur 2048 Byte RAM, von denen ein paar ja auch für den Stack reserviert sind....also nen RAM-Array mit 2000 WORTEN is dann nich. Das sind ja schon 4000 Byte...
Stimmt ja, das kommt ja in den RAM. Daran habe ich garnicht gedacht! Gibt es eine einfache Möglichkeit das array im internen Flash abzulegen?
Beim MSP(von.Neumann-Architektur) sollte es ein "const int name[]" schon tun. (hab ich btw. oben auch schon geschrieben ;) ) hth. Jörg
Ja, mit const. Aber dann kann man es nicht beschreiben. Ansonsten das TI-Demo zum Benutzen des FLASH-Speichers angucken....
Oh sorry Jörg, hab ich glatt überlesen! Aber ich will das arry auch beschreiben. Ich werde mir das TI-Demo mal ansehen. Danke euch!
Wenn du mehr als die 256 Byte des Info-memory brauchst, musst du dem GCC dies aber mitteilen, indem du eine eigene Section im Linker-File dafür erstellst und im Quellcode dann angibst, dass das Array in eben diese Section muss. Sonst kanns passieren, dass du Programmcode oder andere Konstanten löscht, der FLASH kann nämlich immer nur in Sektoren gelöscht werden.
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.