Forum: Compiler & IDEs Einstiegsprobleme mit MSPGCC und CCS


von Sebastian Z. (Gast)


Lesenswert?

Hallo alle zusammen,

ich versuche mich erstmals an den MSP430ern.
Leider bin ich recht schnell an meine Grenzen gestoßen.
Ich kommen mit dem CCS 6.1.1 in Verbindung mit dem MSPGCC 3.05 nicht 
weiter.
Aber vielleicht erst mal zu meinen "Umständen".
Ich habe bisher hauptsächlich mit AVRs zu tun, also AtmelStudio, inkl. 
JTAGICE MK2, JTAGICE3, STK500 usw.
Auch auf AVRGCC-Basis.
Nun möchte ich mich mal mit den MSP430ern beschäftigen. Vor allem den 
MSP430FR...
Dazu habe ich mir Launchpads geholt. Das MSP-EXP430FR4133 und das 
MSP-EXP430FR6989. Auf dem Rechner habe ich die oben angegebenen IDE und 
Compiler installiert.
Der GCC wird mir dann beim neuen Projekt vom CCS angeboten.

Sooo, jetzt wird es für mich undurchsichtig/unverständlich,
Ich habe einfach versucht, die LED die auf dem Launchpad an PORT1.0 ist 
blinken zu lassen.
Dazu habe ich folgenden Code genommen:
1
#include <msp430.h>
2
3
void wait(void);         /* prototype for wait()      */
4
 
5
int main(void)
6
{ /* main function, called by startup-code */
7
  WDTCTL = WDTPW + WDTHOLD;
8
  P1DIR = 0xFF;          /* port 1 = output           */
9
  P1OUT = 0x01;          /* set bit 0 in port 1       */
10
 
11
  for(;;)
12
  { /* infinite loop */
13
    P1OUT = ~P1OUT;      /* invert port 1             */
14
    wait();              /* call delay function       */
15
  }
16
}
17
 
18
void wait(void)
19
{ /* simple delay function */
20
  volatile int i;        /* declare i as volatile int */
21
  for(i = 0; i < 32000; i++);  /* repeat 32000 times (nop)  */
22
}

Dieser Code hat auch beim ersten (LP im Auslieferungszustand) mal 
Compilieren und Debuggen funktioniert und die LED blinkte.
Als ich nur die Zählergrenze verändern wollte und erneut Debuggen 
wollte, hat das CCS auch keinen Fehler beim Compilieren rausgegeben und 
fing augenscheinlich an den Code im LP laufen zu lassen.(Die LEDs auf 
der Programmierseite leuchteten/blinkten) Aber die LED am Target tat 
nix. Auch den vorher funktionierenden Code wieder mit dem Debugger 
einzuspielen brachte nichts. Es tat sich nichts mehr.
Selbst mit dem Batch von TI lies sich das LP auch nict mehr in den 
Auslieferungszustand setzen. Meldung war in der Commandozeile immer nur 
noch "unknown Device". Aber mit dem TI UniFlash Programm konnte ich die 
Auslieferungsprogramme wieder einspielen, und dann lief es auch wieder 
wie neu. Nur Eigene Code kann ich nicht mehr mit dem Debugger einspielen 
und laufen lassen. Das CCS tut zwar immer so, als ob das Programm läuft, 
aber auf dem Target tut sich nix.
Dann habe ich mal ein neues MSP-EXP430FR6989 auf dem Rechner auf meiner 
Arbeit ausprobiert, mit dem Ergebnis, dass sich das Programm von Anfang 
an nicht auf dem LP starten lies.
Mein Rechner zu Hause ist Win8.1 und auf der Arbeit Windows7, CCS und 
GCC sind identisch.
Zu guter Letzt habe ich den Code mal mit dem TI-eigenen Compiler 
probiert und siehe da, es funktioniert. Alles blinkt und lässt sich nach 
Belieben verändern.
Ich habe auch folgenden Code mit dem GCC probiert:
1
#include <msp430.h>
2
3
int main(void)
4
{ /* main function, called by startup-code */
5
  WDTCTL = WDTPW + WDTHOLD;
6
7
  P1DIR = 0xFF;          /* port 1 = output           */
8
  P1OUT = 0x01;          /* set bit 0 in port 1       */
9
 
10
  for(;;)
11
  { /* infinite loop */
12
    P1OUT ^= 0x01;      /* invert port 1             */
13
    for(i=0; i< 20000; i++);
14
  }
15
}
Ergebnis, wie zuvor, mit GCC geht nix, mit TI-Compiler geht es.
Bei beiden Varianten keine Compilerfehler.

Ach so, vielleicht noch zur Info, der Code, der mit GCC compiliert wurde 
lässt sich auch nicht mit dem TI UniFlash Tool einspielen.

Komisch ist nur, dass der Debugger meint, der MSP würde laufen und mir 
auch EnergyTrace Werte anzeigt.

Da ich auf dem MSP-Gebiet und bei CCS absoluter einsteiger bin, hoffe 
ich, jemand kann mir mal kurz auf die Sprünge helfen.

Danke schonmal und viele Grüße

Sebastian

von Bediener (Gast)


Lesenswert?

Ich verstehe nur Bahnhof. :-(

Du hast das CCS nur einmal installiert und nutzt einmal den gcc und 
einmal den TI? Die Projekteinstellungen sind genau gleich?

von Sebastian Z. (Gast)


Lesenswert?

Sorry, wenn es etwas kompliziert umschrieben wurde...

Also kurz gesagt:
Ich habe das CCS installiert, da ist ja der TI Compiler 
bei(Codebegrenzt).
Dazu habe ich den MSPGCC installiert. Der integriert sich ja im CCS.
Soweit so gut.
Wenn ich ein Projekt anlege und den GCC als Compiler auswähle, kann ich 
normal programmieren und bei Build all gibt es keine Fehler, nur beim 
Debuggen kommt nix auf dem Target an, obwohl der Debugger und das LP so 
tut als ob das Programm läuft (scheint als Simulator zu laufen, 
Breakpoints werden angesprungen und der Energytrace zeigt Werte an).
Der MSP ist danach aber zerflasht. Kann ihn nur noch mit dem UniFlash 
Tool und MassErase reaktivieren.
Lege ich aber ein neues Projekt an und wähle beim Anlegen den TI 
Compiler so funktioniert alles.

Und das auf zwei verschiedenen Rechnern mit zwei verschiedenen LPs.

von Clemens L. (c_l)


Lesenswert?

mspgcc und msp430-gcc sind zwei verschiedene (und teilweise 
inkompatible) Compiler. (mspgcc war nie Teil des offiziellen gcc, und 
ist heute veraltet.) Du hast den 'echten' gcc; was du im Web für mspgcc 
findest, könnte auf deinen Compiler nicht zutreffen.

Laut http://gnutoolchains.com/msp430/ könnte es bei deiner Version ein 
Problem mit -ffunction-sections geben; versuche es mal zu entfernen.

von Sebastian Z. (Gast)


Lesenswert?

Aha, wieder was gelernt, danke.
Also ich habe gerade nachgeschaut.

Ich habe das CCS 6.1.1.00022
und als Compiler wohl den MSP430-GCC, den ich direkt von TI 
runtergeladen habe.
Beim Anlegen eines neuen Projekts wird als Compilerversion GNU v4.9.1 
(Red Hat) angezeigt

von Sebastian Z. (Gast)



Lesenswert?

Hallo nochmal,

ich habe jetzt mal n paar Screenshots vom Projekt und den Einstellungen 
gemacht.
Auch habe ich das CCS und den GCC mal komplett entfernt und neu 
installiert.
Ergebnis, wie zuvor.
Debugger meint, der MSP tut was, aber es passiert nix.

von Sebastian Z. (Gast)


Lesenswert?

Ach so, noch was.
Kann es sein , dass das CCS in Verbindung mit dem MSP430-GCC die 
FRAM-Typen noch nicht so vollständig unterstützen?
Ich hab es heute nachmittag mal mit nem LP MSP-EXP430F5529 und dem GCC 
probiert, und da ging es.
Nun würde mich aber noch wundern, warum es beim MSP430FR4133 einmal 
funktioniert hat und dann nie wieder.

Ich würde mich auch freuen, wenn mal jemand schreiben könnte, ob es bei 
ihm funktioniert.
Wäre ja schade, wenn ich da jetzt so viel Zeit reinstecke, und am Ende 
geht es generell nicht.

Grüße
Sebastian

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.