Forum: PC Hard- und Software Programm mit Eclipse compilieren und bin-Datei erzeugen


von Schmandin (Gast)


Lesenswert?

Hallo,

ich habe mir Eclipse gedownloaded und möchte damit ein Programm 
schreiben, compilieren, linken und dann als bin-Datei auf mein 
Mikrocontrollerboard kopieren.

Ich habe die Eclipse-IDE installiert, den arm-gnu-gcc-non-eabi-compiler 
installiert, der auch unter Eclipse gefunden wird, wenn ich ein neues 
Projekt installiere.

Ich möchte einfach ein Hello World-Programm schreiben, dass mir einen 
Text auf dem Mikrocontroller ausgibt über den rs232-bus. Mit dem 
online-compiler funktioniert das ganz gut:

http://mbed.org/

Dort kann ich machen
1
#include "mbed.h"
2
3
int main ()
4
{
5
  printf ("\n\r das ist ein Text");
6
}
.

Ich habe auch schon dort die Export-Funktion benutzt und gesagt, dass 
ich ein arm-gcc embedded-projekt exportieren möchte. Das hat auch 
geklappt und ich habe die main.cpp mit den ganzen include-files, die in 
einem Unterordner alle als .o-Dateien von der Webseite mitgeliefert 
wurden. Also müssen meiner Meinung nach die ganzen Dateien vorhanden 
sein und später vom Linker dann entsprechend mit meinem 
main.cpp-Programm zusammengebunden werden.

Leider funktioniert das nicht :-( Ich habe auch schon diese Anleitungen 
probiert:

https://developer.mbed.org/cookbook/eclipse-for-building-and-debugging

Aber es klappt einfach nicht. Ich bekomme beim Compilieren 2065 errors, 
dabei ließ sich das Programm mit dem Online.Compiler fehlerlos 
compilieren, die bin- Datei auf den mbed kopieren und los gings. Warum 
klappt das mit der Eclipse-Offline-IDE nicht?

von Schmandin (Gast)


Lesenswert?

Nachtrag - die Toolchain habe ich vom Hersteller des Produkts 
heruntergedownloaded:

https://launchpad.net/gcc-arm-embedded

Die untersützt auch meinen Cortex-M4, aber es klappt einfach nicht :-(

von Bernd K. (prof7bit)


Lesenswert?

Ich habe die Erfahrung gemacht daß es einfacher und auch lohnenswerter 
ist in folgenden zwei Schritten vorzugehen. Zuerst wirfst Du das 
mbed-Zeug von der Festplatte und vergisst es vollständig. Du brauchst es 
nicht mehr.

### Schritt 1:
Ein minimales hello-world Projekt und mit minimal meine ich wirklich 
minimal und nicht mbed oder ähnlichen Arduino-für-ARMe-Spielzeug sondern 
wirklich minimal, also:

* headerdateien für den verwendeten Prozessor (jedoch keine Libs!)
* linkerscript
* startup.s
* systeminit.c
* main.c (LED blinken oder sowas in der Art)
* Makefile (handgeschrieben, klein, übersichtlich)

Exemplarisch zum Beispiel sowas wie eines aus dieser netten Sammlung 
hier https://github.com/0xc0170/kinetis_klxx_gcc für verschiedene 
Freescale Demoboards, Du siehst das enthält jeweils nur eine simple 
main.c und im jeweiligen cmsis-Ordner der verwendeten CPU ist nur das 
absolute Minimum (was aber bereits ausreicht für jede beliebige 
Anwendung) enthalten.

Ähnliche simple Makefile-Minimalprojekte gibt es für alle gängigen MCUs 
und Boards, musst nur suchen.

Das bringst Du erstmal auf der Konsole zum Kompilieren mittels make, 
entfernst alles was nicht dazugehört, machst Dich mit dem Makefile 
vertraut solange bis Du Dir im klaren bist was alles dazugehört und wie 
was zusammenhängt. Ganz wichtig: nicht mit Schritt 2 fortfahren bevor 
Du nicht von jeder einzelnen Zeile in den 5 oder so Dateien weißt wofür 
sie gut ist, kein überflüssiger Ballast mehr drinhängt, das Projekt 
ordentlich an der Konsole kompiliert und läuft und Du alles bis hierher 
komplett im Griff hast! Das ist extrem wichtig, also nicht ignorieren!

### Schritt 2:
Erst jetzt kommt die IDE ins Spiel:

 * Aktuelles Eclipse
 * CDT Plugin (für C-Unterstützung)
 * GNUARM-Plugins (für ARM-Spezifische Sachen, Debuggerunterstützung, 
etc)

Obiges installieren und konfigurieren und jetzt gehts los:

 * File -> Import -> C/C++ -> Existing Code as Makefile Project
 * Include-Pfade einstellen (sind nur ein oder zwei) wenn er Sachen rot 
anstreicht
 * Ctrl+B und er sollte jetzt das Projekt schon kompilierern können, 
unter Verwendung des Makefiles aus Schritt 1, Du hast also immer noch 
alles unter Kontrolle, was auch immer an Kompileroptionen nötig ist: im 
Makefile und nirgends anders.
 * Run -> Debug-Configurations, hier wählst Du entweder OpenOCD und 
konfigurierst es für Dein Board oder Programmer oder wenn Du in der 
glücklichen Lage bist einen Segger Dein Eigen zu nennen dann wählst Du 
GDB Segger JLink Debugging und konfigurierst das entsprechend. Jetzt 
kannst Du debuggen.

### Schritt 3
Das Reference Manual deiner CPU wird ab jetzt Dein neuer bester Freund. 
Studiere es ausgiebig. Der Rest ergibt sich dann.

Nur so geht das wenn Du wirklich da einsteigen willst, es gibt kein 
Zwischending, keinen anderen Weg. Wenn das zu hart für Dich ist dann 
bleib bei dem mbed-Online-Zeugs, das läuft zwar per Mausklick, sagt Dir 
aber nicht wie und warum. Wenn Du damit leben kannst dann ist das OK.

: Bearbeitet durch User
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.