Forum: Mikrocontroller und Digitale Elektronik MSP430/IAR/C - keine Arrays?


von Kalri (Gast)


Lesenswert?

Ich bastle nach längerer Zeit mal wieder mit einem MSP430 herum. Bisher 
hat auch alles gut geklappt, aber sobald ich Arrays verwende, stoße ich 
auf ein Problem - laut Debugger sind die Arrays immer <unavailable>. 
Egal wie angelegt:
1
uint8_t rec_buffer[] = {0xAA, 0xAA};
2
unsigned char rec_buffer[2];

Woran liegt das? Bisher kannte ich das nur von Variablen, die der 
Compiler wegrationalisiert wird. Aber mein rec_buffer[0] etc. wird 
definitiv verwendet. Auch static o.ä. ändert nichts. Wenn ich einen 
einfachen Typ wie char draus mache, gehts ja. Passiert mir bei jedem 
Code, auch den trivialsten Tutorials/ANs. Was übersehe ich denn?

von Kalri (Gast)


Lesenswert?

Ich mach auch nichts exotisches damit, nur z.B.
1
rec_buf[i] = RXBUF;

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Mit dem Compiler hat das Problem nicht zu tun, das betrifft den Debugger 
C-Spy.

Welche IAR-Variante verwendest Du?

Du hältst Dich an die hier beschriebene Vorgehensweise?

http://supp.iar.com/FilesPublic/UPDINFO/005832/arm/doc/infocenter/tutor_debugging.ENU.html

(das ist zwar für ARM, sollte aber beim MSP430 nicht anders aussehen)

von Stefan S. (mexakin)


Lesenswert?

also im Code composer Studio geht das immer.
Alle möglichen arrays von verschiedensten typen.
Denke liegt an irgendwas bei dir, gehen sollte das.

von Kalri (Gast)


Lesenswert?

Rufus Τ. F. schrieb:
> Du hältst Dich an die hier beschriebene Vorgehensweise?

Das mache ich so. Bzw. auch mit dem FET-Debugger, wenn der MSP 
dranhängt.

von Kalri (Gast)


Lesenswert?

Rufus Τ. F. schrieb:
> e IAR-Variante verwendest Du?

7.11.2, shared components 8.0.12.5110

von Gust (Gast)


Lesenswert?

Ich muss vorausschicken, ich habe keine Erfahrung mit MSP430 Debugging, 
aber hast du mal im Assembler geschaut, ob das Array in Registern 
angelegt wird. Vielleicht hat der Debugger damit ein Problem.

Wenn du das Array testweise einmal deutlich größer definierst, ist das 
Problem dann immer noch vorhanden?

von soundso (Gast)


Lesenswert?

dann werden sie wohl wegoptimiert zu registern ...

probier mal:
1
volatile unsigned char rec_buffer[2];

von Falk B. (falk)


Lesenswert?

@Kalri (Gast)

>auf ein Problem - laut Debugger sind die Arrays immer <unavailable>.

Dann schalte mal testweise deine Optimierung des Compilers aus.

>definitiv verwendet. Auch static o.ä. ändert nichts.

Logisch. Wenn, dann schon volatile.

von Kalri (Gast)


Lesenswert?

Vielen Dank! Mit volatile UND mit mehr Elementen definiert geht es 
jetzt. (Nur volatile hatte ich früher auch schon, das geht aber trotzdem 
nicht. static hätte doch zumindest bei init mit = 0xAA auch klappen 
müssen, oder?) Bei einem Kollegen geht der gleiche Code ohne volatile, 
obwohl wir beide am IAR nichts gemacht haben (selbe Version, Compiler 
nicht anders konfiguriert...).

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.