STM32 Eclipse Installation: Unterschied zwischen den Versionen

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche
Zeile 22: Zeile 22:


* [http://yagarto.de/ Yagarto-Tools http://yagarto.de/]
* [http://yagarto.de/ Yagarto-Tools http://yagarto.de/]
* [http://www.java.com/de/download/manual.jsp?locale=de], Java installation um Eclipse starten zu können.
* [http://www.java.com/de/download/manual.jsp?locale=de Java], Java installation um Eclipse starten zu können.
* [http://eclipse.org/downloads/ Eclipse], der Download "Eclipse IDE for C/C++ Developers"
* [http://eclipse.org/downloads/ Eclipse], der Download "Eclipse IDE for C/C++ Developers"
* [http://www.freddiechopin.info/ OpenOCD http://www.freddiechopin.info/] >> Download >> Software >> OpenOCD
* [http://www.freddiechopin.info/ OpenOCD http://www.freddiechopin.info/] >> Download >> Software >> OpenOCD

Version vom 27. April 2011, 20:38 Uhr

Dieser Artikel beschreibt, wie man Eclipse unter Windows installiert und für den Prozessor STM32 einrichtet, so dass ein Debuggen möglich ist.

Installation von Eclipse unter Windows

Die Zusammenhänge:

  • Eclipse - der Editor, ist eigentlich nichts weiteres als ein Editor, mit sehr viel Intelligenz
  • Yagarto-Tools - die make, und sonstige Programme
  • YAGARTO GNU ARM toolchain - GCC, GDB, Libs usw., der Compiler und Debugger für Cortex-M3
  • (Alternative zu Yagarto) Code-Sourcery beinhaltet alle benötigten Tools, wie make, GCC, GDB, Newlib usw.
  • CDT - Plugin, das Eclipse erweitert, sodaß C/C++ Programme editiert, kompiliert und gelinkt werden können. CDT steht für "C/C++ Development Tooling". Man kann Eclipse auch mit schon integrierten CDT auf der Eclipse Homepage bekommen.
  • GDB Hardware Debugging - ein weiteres Eclipse-Plugin, welches notwendig ist, um mittels GDB und weiteren Tools Programme zu debuggen.
  • GDB - der GNU Debugger, mit ihm ist es möglich, entsprechend kompilierte Programme auf C-Sourcelevel (und auch Assembler) zu debuggen. Er kann allerdings nicht direkt mit einem JTAG-Interface sprechen. Er "verbindet" sich dafür mit einem GDB-Server, der dann das JTAG-I/F anspricht.
  • OpenOCD - Ein freier GDB-Server, der die Verbindung mit GDB und dem JTAG-Interface herstellt. Er führt die Kommandos des GDBs aus. OpenOCD muss vor dem debuggen gestartet werden, da GDB einen laufenden GDB-Server erwartet. Die Verbindung zwischen dem GDB und dem GDB-Server wird über eine TCP/IP Verbindung hergestellt.
  • JTAG-Interface, z.B. Olimex ARM-USB-OCD, oder diverse andere. Meist über USB an den PC angeschlossen, über ein JTAG-Kabel wird der Adapter mit der Prozessor-Platine verbunden. Der GDB-Server nimmt Kommandos vom GDB entgegen und führt diese über das JTAG-I/F des Prozessors aus.
  • STM32-Prozessor, ja den braucht es auch noch, sonst gibt es nichts zu debuggen.

Es sieht zwar auf den ersten Blick etwas komplex aus, aber es ist dennoch logisch aufgebaut.

Downloads

Die benötigten Dateien für Eclipse:

Eclipse Demo-Projekt:

Blink-LED, komplettes Eclipse-Workspace von MmVisual

  • Eclipse Workspace
  • Mit OpenOCD und Dateien für den Olimex ARM-USB-OCD
  • FW-Lib 3.4.0 von ST
  • Start-Up Code als C-Datei, keine einzige Assembler-Datei
  • Für STM32F103RB (128K Flash) wegen Initialisierung Stack-Pointer
  • Nutzt make Tool, muss aber zu gmake umbenannt werden, ist weiter unten beschrieben

Installation

Installtion von Eclipse

Installation der Code-Spurcery Umgebung

Installation der Yagarto Umgebung

Die Installation sollte so ausgeführt werden, dass alles nach "C:\WinARM\" installiert wird, dazu müssen in den Setup-Paketen während dem Setup immer die Pfade "C:\Programme\" angepasst werden. Damit kann man die gesamte Entwicklung und Konfiguration einfach sichern als ZIP Datei und sogar bei einem zweiten Rechner wieder einspielen.

Zu erst werden die Downloads von Yagarto geladen und installiert. Dort ist auch sehr gut beschrieben wie das Einrichten geht. Allerdings fehlt auf der Yagarto-Seite der Hinweis auf den Download-Link des eigentlichen Eclipse Programms, daher ist er oben im Artikel aufgeführt.

Wenn man diese Yagarto-Anleitung abgeschlossen hat kommt die Einrichtung von OpenOCD. Eine Debugger-Einrichtung ist bei Yagarto auch beschrieben, allerdings nicht für den STM32 Prozessor.

Nach der Installation von Yagarto-Tools muss eine Datei geändert werden: C:\WinARM\yagarto-tools\bin\make.exe muss nach gmake.exe umbenannt werden. Grund: Wenn man Delphi installiert hat, dann würde Eclipse das make Tool von Delphi finden und man kann das Eclipse Projekt nicht kompilieren. Das Demo-Projekt nutzt auch das "gmake.exe". Alternativ kann auch make.exe kopiert zu gmake.exe werden, wenn man kein Delphi installiert hat.

Start mit dem Demo-Projekt

Für alle Projekte habe ich das Verzeichnis C:\WinARM\Projekt\ vorgesehen, damit ist immer alles zusammen. Nun entpackt man das Demo-Projekt nach C:\WinARM\Projekt\ somit müsste dort ein neues Unterverzeichnis "Proj_Demo" vorhanden sein samt allen unterordnern.

Nun Eclipse Öffnen. Menü "File" >> "Switch Workspace" >> "Other...". In der Eingabezeile "Workspace:" wird nun das Verzeichnis "C:\WinARM\Projekt\Proj_Demo" eingegeben. Mit OK wird sich Eclipse beenden und neu starten.

Links im Baum sieht man das Projekt "BlinkLED":

  • inc: die eigenen Includes
  • lib: die FW-Lib von ST
  • out: die kompilierten Dateien und listings
  • prj: OpenOCD und LD Linker-Datei
  • src: die eigenen Quellcodes
  • makefile

Das Projekt wurde geschrieben für den STM32F103RC (256K Flash/48K RAM), läuft aber auch mit einem STM32F103xB da der Stack-Pointer auf 20K initialisiert wird. Details stehen in der Datei "src/stm32f10x_vector.c", Zeile 29,30: <c>#define STACK_TOP (0x20005000 - 4) //#define STACK_TOP (0x2000C000 - 4)</c> Damit wird der Stack-Pointer für den RAM im Chip initialisiert.

Zum kompilieren rechten Mausklick auf das Projekt (normalerweise links im Navigator oder Projekt-Explorer) und dann im aufgehenden Kontextmenu auf "Build" klicken. Mit Strg+B wird nicht nur das Projekt neu kompiliert sondern ALLE Projekte im aktuellen Workspace gerade offen sind. Wenn man dort nur ein Projekt hat geht auch CTRL-B.

Die Funktionen des Demo-Projekts

  • Blink-LED auf Prot A.0, Port C.7, PortD.3,4,7,13 (STM3210C-EVAL Board)
  • Initialisieren aller Variablen
  • Initialisieren Clock auf HSI, 8MHz
  • Initialisieren IO-Pins der LED's
  • Initialisieren Timer für Systick
  • Main-Schleife in der die Timer-Variablen gesetzt und die LED's ausgegeben werden
  • Debug-Helper, siehe "src\DebugHelper.c"
  • Systick-Interrupt
  • komplett in C programmiert, kein Assembler
  • ST FW-Lib V3.4.0 wird für alle Funktionen genutzt

Erster Start mit dem Demo-Projekt

Mit Eclipse mit der grünen Play-Taste mit dem roten Koffer "Run OpenOCD BlinkLED" "OpenOCD BlinkLED starten. Damit wird der GDB Server OpenOCD mit dem JTAG-Key ARM-USB-OCD gestartet. Wenn man einen anderen JTAG Adapter hat, so kann der mit dem kleinen schwarzen Pfeil im Menü "External Tools Configuration..." eingestellt werden. OpenOCD wird mit Start-Parametern gestartet, z.B. "-f .\prj\arm-usb-ocd.cfg" für das Olimex JATG Interface. Wenn man nun ein anderes JATG Interface hat, so muss hier der Dateiname geändert und in das Projekt nach "prj\" muss die CFG-Datei einkopiert werden.

Mit Eclipase mit der grünen Käfertaste (Debug BlinkLED), der kleine Pfeil nach unten, "BlinkLED OpenOCD Reset Load Run" ausführen. Damit wird der GDB Debugger gestartet, das Projekt geladen und gestartet. Der Debugger beendet sich dann automatisch und die CPU läuft.

Weitere Plug-Ins für Eclipse

Einrichten eines eigenen Projektes

Einrichtung GDB-Server

Ein GDB-Server wird immer unter "External Tools Configuration..." eingerichtet.

MenuExternalTool.png

Mit Hilfe dieser Funktion kann ein beliebiges Programm gestartet werden.

OpenOCD mit ARM-USB-OCD von Olimex

Der Aufruf, mit Parameter HW-Interface und Prozessor:

MenuExternalToolOOCD1.png

Der Eintrag im Eclipse-Menü:

MenuExternalToolOOCD2.png

Die restlichen Reiter sind ohne Änderung.

JLink mit Segger GDB-Server einrichten

Im Demo-Projekt ist eine Konfiguration für den Segger GDB-Server enthalten. Dabei wird der GDB-Server so gestartet dass SWD als Kommunikation genutzt wird.

Der Aufruf, mit Parameter für SWD (Single Wire Debug):

MenuExternalToolJLink.png

Der Pfad zum "JLinkGDBServer.exe" muss so angepasst werden je nach dem wohin er installiert wurde.

Einrichtung ST-Link (SWD Programmer vom Eval Board)

Tipps, Tricks und Stoplersteine

  • Die Dateiendung einer C/H Datei muss kleingeschrieben sein, denn sonst meint der GCC Compiler dass es C++ Dateien sind.
  • Wird VBox benutzt und einen Filter für den ST-Link bzw. des USB-Devices des Discovery-Boards eingerichtet, so kommt es zu schwerwiegenden Konflikten bei dem nächsten Start von VBox. Das Problem ist die Seriennummer vom ST-Link, welche nicht schreibbare Zeichen enthält. Ein Workaround zu diesem Problem: In dem eingerichtetem Filter muss die Seriennummer entfernt werden.

Weblinks, Foren, Communities