Forum: Compiler & IDEs Eclipse / GCC für Cortex-M3


von Qduda (Gast)


Lesenswert?

Hallo Zusammen,

ich habe schon recht viel auf diesem Forum recherchiert, konnte aber 
keine Antwort auf meine Frage finden.

Ich würde gerne mit Eclipse Code für einen Cortex-M3 schreiben. Ich 
glaube GCC unterstüzt den Thumb2 Befehlssatz des Cortex-M3. Das würde 
heißen, dass ich keine zusätzlichen Tools mehr einbinden muss. Stimmt 
das soweit? Brauch ich nicht noch irgendwelche Libs für den Cortex?!

Mein nächstes Problem zielt darauf ab einen Keil-Ulink2 Jtag irgendwie 
an Eclipse anzuginbinden, um zu Debuggen und den code down-zuloaden. 
Aber eines nach dem anderen. Erstmal muss ich Code schreiben können. ;-)

Hatte jemand konkrete Erfahrungen? Ich lese nur immer wieder das es 
geht, und die links auf die verwiesen wird, sind sehr dürftig. Meist 
wird auf irgendwelche kommerziellen Toolchains verwiesen, die ich aber 
nicht benutzten möchte.

Vielen vielen Dank schonmal an die Jenigen die sich die mühe machen mir 
zu antworten.

von (prx) A. K. (prx)


Lesenswert?

Qduda schrieb:

> Ich würde gerne mit Eclipse Code für einen Cortex-M3 schreiben. Ich
> glaube GCC unterstüzt den Thumb2 Befehlssatz des Cortex-M3.

Jein, m.W. nicht jede Version. Wohl aber die von Codesourcery.

von Qduda (Gast)


Lesenswert?

Ich dachte GNU GCC unterssüzt ab Version 4.3.0 den Thumb2 Befehlssatz. 
Zumindest ist das so der Documentation zum Projekt zu entnehmen. Wieso 
verweist also jeder auf die codesourcery? Sehe ich etwas nicht? Oder 
verstehe ich etwas falsch?

von Random .. (thorstendb) Benutzerseite


Lesenswert?

Hi,


> Mein nächstes Problem zielt darauf ab einen Keil-Ulink2 Jtag irgendwie
> an Eclipse anzuginbinden

Der ULINK/U2 ist meines Wissens nach nur für den Gebrauch an uVision 
bestimmt, dementsprechend gibt es auch keine gdb Treiber.

Wenn du einen ULINK oder ULINK2 hast, spricht doch nichts dagegen, die 
uVision (wenn Demo: <32k Code) zum Debuggen zu verwenden.

Für den Flash DL gibt es meines Wissens keine Codegrössenbeschränkung.


VG,
/th.

von Martin T. (mthomas) (Moderator) Benutzerseite


Lesenswert?

Qduda schrieb:
> Hallo Zusammen,
>
> ich habe schon recht viel auf diesem Forum recherchiert, konnte aber
> keine Antwort auf meine Frage finden.
>
> Ich würde gerne mit Eclipse Code für einen Cortex-M3 schreiben. Ich
> glaube GCC unterstüzt den Thumb2 Befehlssatz des Cortex-M3.

Ja, wie schon geschrieben, gcc ab Version 4.3.0. Codesourcery hatte 
schon in älteren GCC Unterstützung für CM3 (thumb3, ARMv7) eingebaut. 
Nichts desto trotz macht man mit einem "arm eabi bare metal" Paket von 
Codesourercy nichts falsch, erspart Selbstbau der Toolchain und lite 
Version kostet auch nichts (Alternativen: Angliea SARM, DevkitARM, 
Rowley, WinARM "testing", letzters nur im Notfall, habe schon eine Weile 
nichts mehr daran gemacht und nutze es selbst zur Zeit nicht). Wenn es 
hart auf hart kommt, kann man bei CS auch Support kaufen. (Die Leute von 
CS tragen viel zur Weiterentwicklung der GNU tools für ARM u.a. bei.)

> Das würde
> heißen, dass ich keine zusätzlichen Tools mehr einbinden muss. Stimmt
> das soweit?

Nur zum "schreiben" von Code reicht Eclipse+CDT (gibts als 
Downloadpacket bei eclipse.org w.r.e. heißt es Eclipse for C/C++ 
development). Eclipse kann dann ein make (bei Codesourcery cs-make 
einstellen) mit einem eigenen (=selbst geschriebenen) Makefile aufrufen 
und auch die Fehlermeldungen auswerten und entspr. Stellen im Code 
markieren. Mit einer halbwegs brauchbaren makefile-Vorlage ist das kein 
Hexenwerk. Eclipse kann auch selbst Makefiles erstellen ("managed"), 
habe ich aber noch nie ausprobiert.

> Brauch ich nicht noch irgendwelche Libs für den Cortex?!
Von Seiten des Compilers nicht, aber für die Anwendungsentwicklung lohnt 
es sich schon, nach etwas zusätzlichen "Libs" zu suchen. Ist ziemlich 
mühsam die HW-Register alle selbst zu definieren. Zumindest eine 
Headerdatei mit den Registerdefintiionen sollte man haben (ok - ist aber 
nicht wirklich eine "Lib").

Ansonsten bieten zumindest TI/LMI und STM nützlichen Code mit 
Hilfsfunktionen (habe mit CM3 von Atmel, NXP und Toshiba noch nichts 
gemacht, wird da wohl ähnlich sein). Die Herstellercodes ersparen die 
vielfache Neuerfindung von Rädern. Man kann diese Codes zumindest in 
Teilen auch zu einer "echten" lib (.a) zusammenbauen aber auch einfach 
die Quellcodes (.c) direkt einbinden.

> Mein nächstes Problem zielt darauf ab einen Keil-Ulink2 Jtag irgendwie
> an Eclipse anzuginbinden, um zu Debuggen und den code down-zuloaden.
> Aber eines nach dem anderen. Erstmal muss ich Code schreiben können. ;-)

Es gibt wohl einen gdb-Server mit ULINK2 Unterstützung von Codesourcery, 
zumindest wird das in deren Dokumentation erwähnt, habe kein ULINK2 und 
es somit auch nicht ausprobiert.
µVision kann auch mit GNU tools erzeugte elf-Dateien als Eingabedateien 
zum debuggen nutzen (bei Eval.-Version bis zu einer bestimmten 
Codegröße).

Nur um "down-zuloaden" kann man µVision per Kommandozeile aufrufen. 
Prinzip: objcopy->hex-datei->uVsion mit Kommandozeilenparametern 
aufrufen (siehe Online-Hilfe)->uVision schreibt Daten aus hex-Datei in 
Controller mittels im Workspace eingstelltem Interface. Früher 
gelegentlich mit einem ULINK"1" gemacht, sollte mit dem neueren 
Interface auch noch funktionieren.
Lässt sich auch in makefile etwas automatisieren und in Eclipse kann man 
dann ein "make program" make-target anlegen.

> Hatte jemand konkrete Erfahrungen? Ich lese nur immer wieder das es
> geht, und die links auf die verwiesen wird, sind sehr dürftig. Meist
> wird auf irgendwelche kommerziellen Toolchains verwiesen, die ich aber
> nicht benutzten möchte.

Braucht man auch nicht. Bin selbst ganz zufrieden mit der Kombination 
Eclipse/CDT/CDT Hardware debugging plugin/OpenOCD/Amontec JTAGkey (jedes 
andere von OpenOCD unterstützt Interface sollte auch funktionieren). 
Vielleicht hilft das etwas weiter:
http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/arm_memcards/index.html#stm32_memcard
Darin finden sich fast alle Einstellungen/Optionen, die ich bei den 
letzten Enwicklungen für STM32 verwendet habe, Vorgehensweise sollte 
aber einfach auf andere CM3 übertragbar sein. Im Zweifel hier fragen od. 
E-Mail an die in der readme-Datei angegebene Adresse.

von Gast (Gast)


Lesenswert?

Sehr empfehlen kann ich auch die Yagarto Tool Chain von Michael Fischer, 
unterstützt jetzt auch CM3. Da kann man dann einfach den GDB Server und 
J-Link von Segger benutzen. Eine embOS Portierung gibts dafür wohl auch 
schon, mit der embOS Trial kann man ja alles machen (keine funktionielle 
Einschränkung) bzw. wenn man kein OS will, hat man zumindest 
funktionierende makefiles und Hardwareinitialisierung im Source Code.

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.