mikrocontroller.net

Forum: Compiler & IDEs MSPGCC mit DEV-C++ 4.9.8.0 Compilereinstellungen


Autor: Buri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Ich möchte den MSPGCC mit dem DEV-C++ verknüpfen, nun bin ich leider
bei den Compilereinstellungen etwas hängen geblieben. Habe folgendes
eingeben...

--> Compileroptionen
Folgender Befehl bei Compiler-Aufruf hinzufügen
-mmcu=msp430x149

stimmt das???????? Ausserdem bin ich bei dem Punkt Programme nicht
sicher...

gcc: msp430-gcc.exe
g++: ???????????
make: make.exe
gdb: msp430-gdb.exe
windres: ??????
dllwrap: ??????
gprof: ?????

Der Rest dürfte stimmen --> Verzeichnisse...

So, nun noch zu meiner letzten Frage...
Nach dem compilieren entsteht vermutlich ein .o-File, aber ich brauche
ja ein .elf-File.

Sehe ich das falsch????
Wer kann mir weiterhelfen, oder wo finde ich Informationen????

Gruss

Buri

Autor: Oliver Rogasch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dieser Fragestellung schließe ich mich gerne an.
Allerdings habe ich das hier auch schon mal gepostet. ;)

Gruß

Oliver

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würd mich ja damit beschäftigen, aber ich kenne diese IDE überhaupt
nicht... vielleicht mal Downloaden...

Autor: Oliver Rogasch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

hier ist der link zum download:
http://www.bloodshed.net/dev/devcpp.html
Mittlerweile ist das Update auf 4.9.8.10 draussen, welches man auf der
gleichen Seite findet und einfach nach dem Vollpaket installiert.

Gruß

Oliver

Autor: Buri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Oliver

Ich habe mal folgendes hinzugefügt:
gcc: msp430-gcc.exe
g++: msp430-gcc.exe
make: make.exe
gdb: msp430-gdb.exe
windres: windres.exe
dllwrap: dllwrap.exe
gprof: gprof.exe

dann hat's bei mir funktioniert und ich habe das .o-File erhalten,
allerdings weiss ich nicht ob das wirklich so stimmt. Die Verzeichnisse
musst du natürlich auch anpassen!

Gruss

Buri

Autor: Oliver Rogasch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Buri,

hast du die Verzeichnisse ersetzt, oder hinzugefügt.
Bei mir siehsts derzeit so aus:
Programmdateien ->hab ich unverändert gelassen (iss wahrscheinlich
falsch)
Bibliotheken ->MSPGCC430\mspgcc\lib hinzugefügt
C-Includes ->MSPGCC430\mspgcc\msp430\include\msp430 und
MSPGCC430\mspgcc\msp430\include\sys hinzugefügt
C++-Includes ->unverändert

Falls ich da noch was ändern sollte, wäre nett wenn du Bescheid sagst
;).

gruß

Oliver

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich blick das nicht...
Hab zwar fälschlicherweise diese 5er Beta runtergeladen, aber das
sollte erst mal nicht stören. Erzeugt das Teil ein Makefile und ruft
dann make auf, oder wie soll das laufen?

Autor: Oliver Rogasch (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo OldBug,

das kommt ganz darauf an, was du einstellst.
Wenn du das programm so nutzt wie es voreingestellt ist, dann schreibst
du ganz normale c-Programme, für die er ein Makefile erzeugt.
Wenn du die IDE für mspgcc umkonfigurierst, dann nicht, habe jedenfalls
keins gefunden.
Die Relevanten Einstellungen machst du unter Werkzeuge ->
Compileroptionen
Dort habe ich einfach ein zweites Copilerset definiert, damit ich
zwischen mspgcc und normaler Programmierung umschalten kann.
Ich hab mal meine aktuellen Konfigurationen angehängt.

Wenn ich jetzt kompiliere bekomme ich genau das gleiche .elf-file wie
mit dem Kommandozeilenaufruf msp430-gcc -Os -mmcu=msp430x1121 -o
test1.elf test1.c (ok, ich habe das .elf-file temp.elf genannt).
Da ist mir doch gerade aufgefallen, dass der Aufruf:
msp430-objcopy -Os ihex temp.elf test1.hex
bei mir einen Fehler produziert. Hm. Muss ich mal kontrollieren.

Wäre natürlich schön wenn man das gleich auch noch mit abwickeln
könnte, mal schaun was sich da anbietet.

Gruß

Oliver

Autor: Buri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Oliver

Ich habs mit folgender Einstellung geschaft:

--> Compileroptionen
Folgender Befehl bei Compiler-Aufruf hinzufügen
-mmcu=msp430x149 -g

Diese Befehle zur Linker-Kommandozeile hinzufügen
-mmcu=msp430x149 -g

--> Einstellung
Nichts verändert

-->Programmdateien
\mspgcc\bin
\mspgcc\lib\gcc-lib\msp430\3.2.3 (kann vielleicht bei dir anders
aussehen???)
\mspgcc\msp430\bin

-->Bibliotheken
\mspgcc\lib
\mspgcc\msp430\lib
\IAR Systems\ew23\430\lib (Ist die Biblio von dem IAR)

-->C-Includes
\mspgcc\msp430\include
\IAR Systems\ew23\430\inc (Wieder vom IAR)

-->C++-Includes
Nichts verändert

-->Programme
gcc: msp430-gcc.exe
g++: msp430-gcc.exe
make: make.exe
gdb: msp430-gdb.exe
windres: windres.exe
dllwrap: dllwrap.exe
gprof: gprof.exe

So hat's bei mir funktioniert...
@OldBug So wie ich das gesehen habe wird ein makefile im Verzeichnis
erstellt und dieses dann ausgeführt...mehr kann ich leider auch noch
nicht dazu sagen...

Gruss

Buri

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
-Os für objcopy ist denke ich mal falsch...

Autor: Oliver Rogasch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

so sieht die Fehlermeldung aus, die ich beim erzeugen des Hex-Files
bekomme. Ich habe das auch schon mit dem Beispiel probiert. Ich sehe da
keinen Fehler, es sei denn es ist einer auf der Webseite.

C:\Dokumente und Einstellungen\OR\Desktop\Temp>msp430-objcopy -Os
ihex temp.elf test1.hex
Usage: msp430-objcopy [option(s)] in-file [out-file]
 Copies a binary file, possibly transforming it in the process
 The options are:
  -I --input-target <bfdname>      Assume input file is in format
<bfdname>
  -O --output-target <bfdname>     Create an output file in format
<bfdname>
  -B --binary-architecture <arch>  Set arch of output file, when input
is binary

  -F --target <bfdname>            Set both input and output format to
<bfdname>

     --debugging                   Convert debugging information, if
possible
  -p --preserve-dates              Copy modified/access timestamps to
the output

  -j --only-section <name>         Only copy section <name> into the
output
  -R --remove-section <name>       Remove section <name> from the
output
  -S --strip-all                   Remove all symbol and relocation
information
  -g --strip-debug                 Remove all debugging symbols
     --strip-unneeded              Remove all symbols not needed by
relocations
  -N --strip-symbol <name>         Do not copy symbol <name>
  -K --keep-symbol <name>          Only copy symbol <name>
  -L --localize-symbol <name>      Force symbol <name> to be marked as
a local
  -G --keep-global-symbol <name>   Localize all symbols except <name>
  -W --weaken-symbol <name>        Force symbol <name> to be marked as
a weak
     --weaken                      Force all global symbols to be
marked as weak

  -x --discard-all                 Remove all non-global symbols
  -X --discard-locals              Remove any compiler-generated
symbols
  -i --interleave <number>         Only copy one out of every <number>
bytes
  -b --byte <num>                  Select byte <num> in every
interleaved block
     --gap-fill <val>              Fill gaps between sections with
<val>
     --pad-to <addr>               Pad the last section up to address
<addr>
     --set-start <addr>            Set the start address to <addr>
    {--change-start|--adjust-start} <incr>
                                   Add <incr> to the start address
    {--change-addresses|--adjust-vma} <incr>
                                   Add <incr> to LMA, VMA and start
addresses
    {--change-section-address|--adjust-section-vma} <name>{=|+|-}<val>
                                   Change LMA and VMA of section <name>
by <val>

     --change-section-lma <name>{=|+|-}<val>
                                   Change the LMA of section <name> by
<val>
     --change-section-vma <name>{=|+|-}<val>
                                   Change the VMA of section <name> by
<val>
    {--[no-]change-warnings|--[no-]adjust-warnings}
                                   Warn if a named section does not
exist
     --set-section-flags <name>=<flags>
                                   Set section <name>'s properties to
<flags>
     --add-section <name>=<file>   Add section <name> found in <file>
to output
     --rename-section <old>=<new>[,<flags>] Rename section <old> to
<new>
     --change-leading-char         Force output format's leading
character style

     --remove-leading-char         Remove leading character from global
symbols
     --redefine-sym <old>=<new>    Redefine symbol name <old> to <new>
     --srec-len <number>           Restrict the length of generated
Srecords
     --srec-forceS3                Restrict the type of generated
Srecords to S3

     --strip-symbols <file>        -N for all symbols listed in <file>
     --keep-symbols <file>         -K for all symbols listed in <file>
     --localize-symbols <file>     -L for all symbols listed in <file>
     --keep-global-symbols <file>  -G for all symbols listed in <file>
     --weaken-symbols <file>       -W for all symbols listed in <file>
     --alt-machine-code <index>    Use alternate machine code for
output
     --prefix-symbols <prefix>     Add <prefix> to start of every
symbol name
     --prefix-sections <prefix>    Add <prefix> to start of every
section name
     --prefix-alloc-sections <prefix>
                                   Add <prefix> to start of every
allocatable
                                     section name
  -v --verbose                     List all object files modified
  -V --version                     Display this program's version
number
  -h --help                        Display this output
msp430-objcopy: supported targets: elf32-msp430 elf32-little elf32-big
srec symbolsrec tekhex binary ihex

Gruß

Oliver

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
msp430-objcopy -O ihex temp.elf test1.hex

...

Autor: Oliver Rogasch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke.

Autor: Oliver Rogasch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, ich bins mal wieder.

@OldBug

>Erzeugt das Teil ein Makefile und ruft dann make auf, oder wie soll
>das laufen?

Kommt drauf an:
1. Mgl: Du öffnest einfach nur dein c-file und machst die oben
aufgeführten Compilereinstellungen. Diese gelten dann global(Tip: neuen
Compilerset anlegen, damit man mit dem Original-Set "normale"
PC-Anwendungen schreiben kann).
Das Programm spuckt dir dann deine elf Datei aus.(bei Compiler-Optionen
steht bei mir: -mmcu=msp430x149 -g -o test1.elf).
2.Mgl: Du legst ein Projekt an Datei->Neu->Projekt.
Dann Projekt->Zum Projekt hinzufügen->Deine Datei(en).
Jetzt erzeugt dir DevCpp immer wieder neu ein Makefile, je nachdem
welche Einstellungen du in Werkzwuge->Compiler Optionen, bzw.
Projekt->Projekt Optionen gemacht hast. Du kannst unter Projekt->
Projekt Optionen->Make oben links das Kästchen aktivieren und in der
Zeile darunter ein Makefile auswählen, das benutzt werden soll.
(Achtung Bug: in dem Fenster sind die Labels nur als <ERRxxx> zu sehen,
zumindest bei mir)

Wenn mir da jetzt aber einer erklären könnte, wie man ein Makefile
selber schreibt, insbesondere, wie ich da jetzt mein .elf-file
rausbekomme, wäre ich sehr froh. Bisher habe ich immer das automatisch
generierte Makefile zum Programmieren benutzt.

Gruß

Oliver

Autor: Oliver Rogasch (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier ist mein konfiguriertes Makefile.

Gruß

Oliver

Autor: Buri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Bei einem Projekt mit mehreren Dateien habe ich folgende Fehlermeldung
erhalten. --> Kompiliert mit MSPGCC
Wer weiss was das bedeutet???

make: *** No rule to make target `to', needed by `main.o'.  Stop.

Gruss

Buri

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Daß da im Makefile sowas wie:

main.o: to

steht und er nun nicht weiß, wie er die Datei `to' anlegen soll...

Autor: Fanaticf1232 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute,
ich beschäftige mich auch grad mit dem Thema.
Habs schon so weit geschaft, dass ich mit Dos-Fenster Debuggen kann
(Breakpointssetzen usw.). Kompilieren und HEX-fileerzeugung mache ich
aber noch mit selbsdefinierten Werkzeugen.
Nur das Kompilieren direkt in Dev-C++ klappt noch nicht so richtig.

Mein Problem:

Wie schalte ich die automatische Makefile-Erzeugung ab ???

Bitte helft mir !
Gruß - Sebastian.

Autor: Oliver Rogasch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Sebastian,

öffne ->Project -> Project Options -> Makefile
aktiviere "use custon makefile"
such dein eigenes Makefile
fertig

Gruß

Oliver

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

Bewertung
0 lesenswert
nicht lesenswert
Hi Oliver,

danke für den Hinweis, bloß dass ich so eine Option nicht auswählen
kann (siehe Anhang). Wie gesagt ich benutze Version 4.9.8.0  .
Welche Version benutzt denn du ?

Es gibt ja auch schon die 4.9.8.10ner Version, wie ich gerade hier im
Forum gelesen habe. Funktioniert es bei dieser Version etwa?

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

Bewertung
0 lesenswert
nicht lesenswert
Hi Oliver,

danke für den Hinweis, bloß dass ich so eine Option nicht auswählen
kann (siehe Anhang). Wie gesagt ich benutze Version 4.9.8.0  .
Welche Version benutzt denn du ?

Es gibt ja auch schon die 4.9.8.10ner Version, wie ich gerade hier im
Forum gelesen habe. Funktioniert es bei dieser Version etwa?

Gruß - Sebastian

Autor: Oliver Rogasch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh, ja, sorry,

ich hab natürlich die 10er Version.
Die Spracheinstellungen solltest du aber auf englisch lassen, da in der
deutschen Übersetzung ein paar Sachen fehlen, bzw falsch sind. Du kannst
dir aber auch ein korrigiertes deutsches File runterladen. Dass ist
(wenn ich mich recht entsinne) irgendwo auf auf der dev-cpp seite auf
sourceforge. Musst da mal die Foren durchsuchen.

Gruß

Oliver

Autor: Fanaticf1232 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Oliver,

ich hab inzwischen schon auf die 10ner Version upgedatet und alle
Einstellungen getroffen (wobei mir die Fehler der deutschen
Sprachversion auch aufgefallen sind).
Mit Hilfe deines Makefiles, das du oben in einem Post mitangehängt
hast; ist dann auch die *.elf Datei erstellt worden (auch keine
Fehlermeldung beim compilieren).
Aber sobald ich auf Fehlersuche (Debug) klicke kommt eine Meldung:
"Datei nicht kompiliert".
Braucht das Programm hier unbedingt die *.exe Datei oder wie?

Kannst du denn schon die Breakpoints mit DevC++ in der *.c Datei setzen
oder debuggst du über Kommandos ?

Gruß Sebastian.

PS.: Wenn du mir deine Emailaddresse schickst und evtl. gewillt bist
mir schnell auf die Sprünge zu helfen wär ich dir sehr dankbar ..

Autor: Oliver Rogasch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Sebastian,

meine Emailadresse steht oben in der Kopfzeile ;-).Das Problem liegt
darin, dass du eine elf-Datei erzeugt hast.
Diese musst du vor dem Debuggen aber erst mal auf den Controller
übertragen. Das habe ich bisher immer über die Konsole gemacht. Dev-cpp
habe ich nur zum Programmieren und kompilieren benutzt. Alles andere hab
ich über die Konsole versucht, obwohl ich da ein paar derbe
Fehlermeldungen bekommen habe, die ich bis heute noch nicht beseitigen
konnte. Ich habe mich derweil erstmal mit der HW beschäftigt.
Kannst auch mal hier nachschauen:
http://www.mikrocontroller.net/forum/read-2-81737.html
die Fehlermeldungen sind immer noch die gleichen. :((

Gruß

Oliver

Autor: Fanaticf1232 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Oliver,

den Fehler:   "Remote failure reply: E00"  hatte ich auch schon.
Vermutlich liegt es daran wenn man beim debuggen mit den "n" (next)
oder "ni" Befehlen arbeitet. Dabei kommt man an ein Schleifenende und
das ganze hängt sich auf.
Setze einfach eine Breakpoint ("break 'zeile'") auf einen
beliebigen Befehl in deinem Programm und debugge mit dem "c"
(continue) Befehl, dann funktionierts. (zumindest bei mir; achja ich
hab auch ohne Funktionsprototyp gearbeitet also die ganze Fkt. vor main
definiert)

Die Hex Datei war auf dem uC und Die Meldung "Datei nicht kompiliert"
kommt trotzdem.

Noch ein Tipp von mir:
Mit dem Parameter:  "-x c:\Mspgcc\bin\gdb.ini" beim Aufruf der
msp430-gdb.exe Datei werden die Befehle in der gdb.ini ausgeführt.
Datei einfach selber anlegen und "setremoteaddresssize = 64"ect. da
rein schreiben.

ciao - Sebastian.

Autor: Oliver Rogasch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bins nochmal,

die Meldung "Datei nicht kompiliert kommt daher, dass du ja kein
.exe-file erzeugst. Dev-cpp such nämlich nach diesem und bricht den
Ausführvorgang ab wenn er das nicht findet. Ich habe noch nicht
rausgefunden, wie man der IDE mitteilt, dass er das .elf auf dem
Remote-µC ausführen soll. Deshalb bleib zum Rüberschieben und Debuggen
lieber erstmal bei der Konsolenvariante.

Mit Breakpoint und continue hab ich genau die gleichen Fehler und das
Inifile hab ich auch eingebunden, heißt bloss anders.
Naja, werde das alles jedenfalls zum x-ten Mal durchchecken, wenn ich
meine HW fertig habe.

Gruß

Oliver

Autor: Fanaticf1232 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Oliver,

wie groß ist bei dir der Größenunterschied zwischen IAR-Hexfile und
MSPGCC-Hexfile? Bei IAR sieht mans in dem Meldefenster von C-SPY
wieviel er hochgeladen hat.
Ich hab nämlich das Problem, dass ich bei IAR an die 4K Grenze gestoßen
bin und mit GCC das Hexfile dann 10K hat obwohl ich mit "-O2"
optimiere.
Kann mir da irgenwer einen Tipp geben?

Gruß - Sebastian.

Autor: OldBug (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja: nimm GCC ;-)

Autor: Fanaticf1232 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, sonst noch Vorschläge?

- Sebastian

Autor: Fanaticf1232 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

Wie kann man den "wite-formatter" bei gcc auf "small" stellen?

Dieser wird bei Funktionen wie printf und sprintf benutzt.
Im Manual hab ich nichts gefunden.

ciao - Sebastian

Autor: Karlheinz Druschel (kdruschel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm,

also ich habe hier ein Projekt das für uns entwickelt wurde. Der 
Entwickler hat mit den Kommandozeilenprogrammen gearbeitet, das klappt 
bei mir auch.
Aber ich würde jetzt gerne auf Dev C++ umstellen....
Compilieren klappt auch, aber irgendwie ruft er den Linker nicht auf.
"linker input file unused because linking not done"


Und kann mir mal einer sagen was .elf für eine Datei ist ?
Früher, als in meiner Jugend, war das mal so, dass mir ein Compiler .obj 
files erzeugt, welche ich dann zusammen mit den Bibliotheken vom Linker 
binden lasse.
Wie sieht das hier aus ?


Greets
Karlheinz

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert

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.