Forum: Mikrocontroller und Digitale Elektronik Maximale Arraygröße GCC + MSP430F169


von Patti (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Hauke R. (lafkaschar) Benutzerseite


Lesenswert?

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.

von Jörg X. (Gast)


Lesenswert?

@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

von Jörg X. (Gast)


Lesenswert?

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

von Christian R. (supachris)


Lesenswert?

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...

von Patti (Gast)


Lesenswert?

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?

von Jörg X. (Gast)


Lesenswert?

Beim MSP(von.Neumann-Architektur) sollte es ein "const int name[]" schon 
tun. (hab ich btw. oben auch schon geschrieben ;) )

hth. Jörg

von Christian R. (supachris)


Lesenswert?

Ja, mit const. Aber dann kann man es nicht beschreiben. Ansonsten das 
TI-Demo zum Benutzen des FLASH-Speichers angucken....

von Patti (Gast)


Lesenswert?

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!

von Christian R. (supachris)


Lesenswert?

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
Noch kein Account? Hier anmelden.