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.