mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430 Eclipse und mspgcc


Autor: reflection (Gast)
Datum:
Angehängte Dateien:
  • preview image for 1.gif
    1.gif
    40,1 KB, 236 Downloads

Bewertung
0 lesenswert
nicht lesenswert
Salu zusammen

Ich bin am verzweifeln :o)

Bin seit Stunden hier am probieren die Entwicklungsumgebung MSP430 
Eclipse mspgcc zum laufen zu bewegen. Ich habe es nun endlich geschafft 
ein managed C Project zu erzeugen, habe auch überall nach der Anleitung 
die hier auf der Homepage ist, msp430x149 eingestellt.
Nun habe ich meine bereits existenten Files aus IAR übernommen (neue 
Files in Eclipse erzeugt und Quellcode kopiert)
Includes habe ich mspgcc und noch die von IAR angegeben, aber wenn ich 
speichere, sprich auch gleich Compiliere, spuckt er mir 60 Errors und 
jede Menge Warnings raus. Die meisten lauten so in etwa:  P1SEL 
undeclared (first use in this function) Habe auch noch ein Pic 
angehängt, vielleicht sieht man da was. Ich glaube aber ich habe das 
deklariert in den .h Files. Kann es sein das ich die noch speziell 
anhängen muss?
Wäre über jede Hilfe dankbar

Gruss reflection

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du bei den Projekteigenschaften den Pfad bei Includes angegeben, wo 
die ganzen Header-Files sind? Bei der Standard-Install wäre das: 
C:\\mspgcc\msp430\include
Und auch die msp430x14x.h includiert?

Autor: Msp 430_crew (msp430_crew)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Liste am besten mal alle Fehler auf, dann kann man mehr sehen! Aber es 
sieht ganz so aus als wenn Du was vergessen hast zu includieren, wie 
supachris schon erwähnt hat.

Autor: reflection (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, das habe ich beides gemacht

Gruss reflection

Autor: Msp 430_crew (msp430_crew)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mich wundert es auch das in deinem Projektordner die msp430x14x.h 
steht.....die steht normalerweise nur im includes-Verzeichnis! Außerdem 
scheint es auch ein Problem mit ihr zu geben (wegen dem roten Kreuz vor 
der Datei). Hast Du die manuell dort eingefügt?

Autor: reflection (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja das habe ich als es nicht gegangen ist. Habe auch die Sachen von IAR 
noch eingebunden. Keine Ahnung ob es daran liegt, aber nur mit mspgcc 
sah es genau so aus. Irgendwie werden die ganzen Ports ect. nicht 
erkannt. Also sie stehen zwar im .h, aber der Compiler will das nicht so 
sehen... grrrr Oder muss ich noch andere Sachen abändern wenn ich ein 
Programm von IAR übernehmen möchte?

Klappt das mit dem MSP FET USB Debugger eigentlich problemlos? Sorry für 
die vielen Fragen, aber langsam zweifle ich echt an mir

Gute Nacht

Greets

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also die Datei muss da raus, eventuell beißt sich da was, das ist 
bestimmt die vom IAR. Richtigen Prozessortyp bei Compiler UND Linker 
eingestellt? Bist du nach der Anleitung gegangen?

Anders als bei IAR werden die Interrupts behandelt, musste ma Anleitung 
schauen, und die signal.h einbinden.

Ja, USB-FET klappt mit dem gdbproxy wunderbar. Ich hab den gdb-proxy 
gleich als external tool im eclipse mit drin, geht prima.

Autor: reflection (Gast)
Datum:
Angehängte Dateien:
  • preview image for 2.gif
    2.gif
    36,4 KB, 150 Downloads

Bewertung
0 lesenswert
nicht lesenswert
Salu

Ich habe jetzt mal aufgeräumt. Hier sieht man auch die Sachen die ich 
eingebunden habe. Komisch ist, dass er nur schon die .c nicht einbinden 
kann, die sind ja aber in dem Verzeichnis vorhanden. Ich habe die 
Anleitung einmal durchgemacht bis ich dazu kam die Datei gdbtarget.ini 
zu erstellen. Compilieren sollte ich da ja schon können oder sehe ich 
das falsch?

Gruss Serge

PS: Mit der Anleitung hatte ich eben so meine Mühe, da der eine Link 
dort nicht funktioniert. Habe es dann von Hand installiert, kann es sein 
das ich da noch was vergessen habe? Ein Projekt konnte ich aber genau so 
erstellen wie es in der Anleitung steht.

Autor: reflection (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier noch ein Auszug aus dem Fehlerlog

Gruss reflection

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1. Seit wann werden C-Dateien direkt includiert? Dafür gibts 
Header-Files.

2. Ich schätze, in den betreffenden C-Dateien ist die Zeile #include 
<msp430x14x.h> nicht drin, denn in der Main meckert der die Register 
nicht an

Also, leg mal für die lcd.c usw jeweils eine .h Datei an, und includiere 
die.

Am übersichtlichsten macht man das meiner Meinung nach, wenn man eine 
projekt.h erstellt, und diese überall includiert. In der project.h dann 
die prozessorspzifische includieren und alle anderen .h dateien deines 
Projektes. Dann klappt das auch.

Von Hand installieren ist sowieso besser, dann hast du nicht diese 
hoffnungslos veralteten Versionen aus dem Paket da.

Autor: reflection (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Salu

Das verstehe ich jetzt nicht ganz: Also, leg mal für die lcd.c usw 
jeweils eine .h Datei an, und includiere die.

Ich habe ja dort nur C-Code drin in meinen .c Files. Was soll ich dann 
in  die .h schreiben? Was mich wundert ist, dass es in IAR so geklappt 
hat.

Das mit dem include msp430x14x.h werde ich noch probieren

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, man kann zwar theoretisch auch c-files includieren, aber das ist 
schlechter Stil und unübersichtlich.

In eine Header-Datei kommen die Funktionsdeklarationen, und eventuelle 
Defines usw.


Autor: reflection (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe nun mal die includes in allen Files gemacht. Nun habe ich nur noch 
5 Fehler :o)

Er macht immer noch Fehler wenn ich ein .c includen will: lcd.c No such 
file or directory

Er gibt bei jeder for Schleife den Fehler: 'for' loop initial 
declaration used outside C99 mode

Könnt ihr mir vielleicht da noch weiterhelfen? Wäre echt nett!

Gruss und Merci im Voraus

reflection

Autor: reflection (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das heisst ich muss die .c gar nicht in der Main Methode deklarieren? 
Fügt er die automatisch hinzu wenn die im gleichen Directory liegen?

Greets

Autor: reflection (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also, die Fehler mit include der .c Files ging nun. Musste aber das 
Projekt noch unter includes in den Projectoptions einstellen (dort 
befinden sich die .c Files).

Habe jetzt noch die zwei Fehler mit dem

'for' loop initial declaration used outside C99 mode

Gruss reflection

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jo, also das ist halt ziemlich schlechter Stil, includiert werden keine 
C-Files sondern Header-Dateien, in denen die Funktionen des C-Files 
deklariert sind.

Dann müsstest du in der main.c halt nur #include "lcd.h" machen.

In der lcd.h steht dann z.B.

void InitLCD(void);

In der lcd.c kommt dann die komplette Funktion:

void InitLCD(void)
{
      blabla....
}

So macht man das, das wird übersichtlich und entspricht dem 
Include-Prinzip.

Den C99 Fehler bekommst du weg, in dem du keine Schleifenvariablen 
direkt in der Schleife deklarierst, sondern vorher.
Oder den Compiler umstellen auf C99 Modus. Da weiß ich aber grad nich, 
welche Option da rein muss....

Autor: reflection (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe ich erfolgreich bei einer der beiden for Schleifen hin gekriegt, 
bei der anderen will es nicht. Die Schleife lautet folgendermassen:

void sendString(char* string)
{
  for(int i = 0; string[i] != '\0'; ++i)

Wenn ich das jetzt so schreibe:

void sendString(char* string)
{
  int i;
  for(i = 0; string[i] != '\0'; ++i)

bekomme ich wieder 20 Errors. Er sagt dann bei jeder Funktion bei der 
geschweiften Klammer, dass dies das erste mal in dieser Funktion 
deklariert sei. Gibt dann auch zig Fehler wegen doppeldeklaration, aber 
das kann irendwie auch nicht sein, da ich es auch schon mit einer 
anderen Variable (j) versucht habe und diese garantiert nicht verwendet 
wird. Sorry für die Beschreibung, aber weiss nicht wie ich das 
verständlicher rüberbringen soll.

Der Rest klappt. Ein riesen Dankeschön an die die mir geholfen haben!

Gruss reflection

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tjo, weiß ich auch nich, aber mach doch:
while(string)
{
    Senfunktion....
    string++;
}

Autor: reflection (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Salu

Hm, irgendwie will es nicht. Bin seit über 2h an dieser for Schleife und 
seh es einfach nicht wieso ich das nicht machen kann. Habe ich da 
vielleicht Probs mit dem Array of Char?

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, auf Pointer greift man normalerweise nicht mit Indizes zu....aber 
bei mir compiliert der obigen Quellcode....

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.