STM32 programmieren und debuggen mit der Standard IDE Eclipse

Aus Nicki Wiki
Zur Navigation springen Zur Suche springen

Es gibt verschiedene fertige IDEs um Mikrocontroller von STMicroelectronics zu programmieren, wie z.B. Attolic TrueSTUDIO, SW4STM32, IAR-EWARM oder MDK. Jedoch bieten diese IDEs mehr oder weniger Einschränkungen und/oder nerven durch Werbung. Diese Anleitung zeigt wie Mikrocontroller von STM mit der Standard Eclipse IDE C/C++ programmiert und debuggt werden kann.

Unterstützte Betriebssysteme: Windows, Linux und Mac (Unter Linux und Mac ist die Installationsanleitungen auf den jeweiligen Websites zu beachten)
In diesem Tutorial wird das Discovery-Board: STM32F407G-DISC1 von STMicroelectronics verwendet.

Downloads

Eclipse IDE C/C++
GNU MCU Eclipse plugin
GNU ARM Embedded Toolchain
GNU MCU Eclipse OpenOCD
How to install the OpenOCD binaries

ST-Link USB-Treiber
Zadig generischer USB-Treiber (Nur bei Problemen mit OpenOCD)

Die Pakete können normal installiert werden; später ist es nur wichtig, die Pfade zu kennen.
In dieser Anleitung wird alles in einem Pfad unter „D:\Programme\eclipse“ installiert und entpackt.

Eclipse Installation

Eclipse in dem gewünschten Ordnerpfad entpacken - danach kann es schon gestartet werden. Pfad für den workspace festlegen.

Stm32 standard eclipse workspace.png

GNU MCU Eclipse plug-ins Installation

In der Menüleiste auf Help -> Eclipse Marketplace… In der Suchleiste gnu arm, ab Eclipse Oxygen gnu mcu eingeben und bestätigen.
Das plugin GNU MCU Eclipse 4.2.1 oder neuer mit install installieren; dabei sind alle Häkchen zu setzen.

Stm32 standard eclipse marketplace.png

Es kann vorkommen, dass die Installation über den Marketplace fehlschlägt. Eine andere Option ist die manuelle Installation.
Download GNU ARM Eclipse plug-in bzw. GNU MCU Eclipse

In der Menüleiste von eclipse: Help -> Install New Software… -> Add… -> Archive… -> das zuvor heruntergeladene zip Archiv auswählen -> OK -> alle Häkchen setzen -> Next -> Next -> Lizenz akzeptieren -> Finish.

Stm32 standard eclipse install software.png

GNU Arm Toolchain

Die heruntergeladene GNU Arm Toolchain, wenn nicht schon geschehen, installieren und den Toolchainpfad merken. Die Einrichtung erfolgt mittels des Testprojekts HelloWorld.
In Eclipse File -> New -> C Projekt unter Project type: -> STM32F4xx C/C++ Project -> Cross Arm GCC auswählen.
Einen Projektnamen vergeben - hier Project name: HelloWorld. Weiter mit Next.
Die Chip-Familie auswählen - hier Chip family: STM32F407xx.

Stm32 standard eclipse processor settings.png

Danach Next -> Next -> Next.
Jetzt den Toolchainpfad bis Ordner "bin" angeben, hier Toolchain path: D:\Programme\eclipse\GNU_ARM_Toolchain\5.4 2016q3\bin.

Stm32 standard eclipse toolchain.png

und mit Finish bestätigen.
Auf den Hammer klicken, das Programm sollte nun erfolgreich compilieren!

GNU MCU Eclipse OpenOCD Debugging

Das GNU MCU Eclipse OpenOCD ist ein für Eclipse angepasster fork von OpenOCD, welches ein freies und offenes On-Chip-Debugging mit In-System-Programmierung und Boundary-Scan-Tests ist.
Das heruntergeladene GNU MCU Eclipse OpenOCD, wenn nicht schon geschehen, installieren und den OpenOCD Pfad merken.
In Eclipse -> Window -> Preferences -> Run/Debug -> OpenOCD auswählen.
Ab Eclipse Oxygen -> Window -> Preferences -> MCU -> Global OpenOCD Path.
Jetzt den OpenOCD Pfad bis zum Ordner "bin" eingeben, hier Folder: D:/Programme/eclipse/OpenOCD/bin und mit OK bestätigen.

Stm32 standard eclipse debuggen openocd pfad.png

In Eclipse -> Run -> Debug Configurations… Doppelklick auf GDB OpenOCD Debugging -> HelloWorld Debug Bevor debuggt werden kann muss noch die Debbuging-Konfigurationsdatei erstellt werden.

OpenOCD Debugging Konfigurationsdatei

Es muss für jeden Chip oder Discovery-Bord eine Debbuging Konfigurationsdatei auch config-Datei erstellt werden sowie die richtige Konfigurationsdatei für die Debuggingverbindung ausgewählt werden.
Als erstes ist das Discovery-Board o.ä. mit dem PC über USB zu verbinden. Im Geräte-Manager (Systemsteuerung -> Geräte-Manager) -> Anschlüsse(COM & LPT)

Stm32 standard eclipse debuggen geraet.png

Doppelklick -> STMicroelectronics STLink Virtual COM Port -> Details. Unter Eigenschaften -> Hardware-IDs die ID nach USB\VID merken, hier (… 0483&PID_374B …).

Stm32 standard eclipse debuggen geraet details.png

In dem OpenOCD Ordner -> scripts -> interface -> stlink-v2-1.cfg öffnen und die IDs vergleichen.

Stm32 standard eclipse debuggen stlink cfg.png

Wird eine andere ST-Link Version genutzt, muss die entsprechende config Datei ausgewählt werden. Stimmen die IDs überein, ist die richtige Datei gefunden -> Dateinamen merken.
Im nächsten Schritt wird die Debbugíng Konfigurationsdatei ausgewählt.
Da hier ein Discovery-Board verwendet wird, kann das Skript unter OpenOCD -> scripts -> board -> stm32f4discovery.cfg in den Projectordner kopiert werden.

Stm32 standard eclipse debuggen discovery cfg.png

Wird ein Chip verwendet, ist aus dem "cpu" Ordner ein Skript auszuwählen. Die Datei wird jetzt an unser Board angepasst und dazu als erstes von stm32f4discovery.cfg in stm32f407g.cfg umbenannt. Danach wird die umbenannte Datei stm32f407g.cfg geöffnet und unter dem Punkt source der Dateiname der Debuggingverbindung korrigiert - hier source [find interface/stlink-v2-1.cfg].

Stm32 standard eclipse debuggen discovery stm cfg.png

Zurück in Eclipse -> Run -> Debug Configuration... -> GDB OpenOCD Debugging -> HelloWorld Debug
Registerkarte Debugger -> OpenOCD Setup den Dateinamen mit der Option -f für File in Config options eintragen - hier Config options: -f stm32f407g.cfg

Stm32 standard eclipse debuggen openocd debugger.png

Registerkarte Common die Option Shared file mit dem Projektnamen auswählen - hier Shared file: \HelloWorld

Stm32 standard eclipse debuggen shared.png

Mit Apply speichern oder mit Debug speichern und debuggen.

Stm32 standard eclipse debuggen debugging.png

Ordnerstruktur

Nach dem entpacken und installieren der Pakete erhält man folgende Ordnerstruktur:

Stm32 standard eclipse debuggen folderstruktur.png

Probleme

OpenOCD konnte nicht starten -> Als Administrator (sudo) starten
OpenOCD startet es kommt aber zu einem Fehler -> Zadig -> starten -> Install WCID Driver

Quellen

https://launchpad.net/gcc-arm-embedded
http://gnuarmeclipse.github.io/windows-build-tools/
http://gnuarmeclipse.github.io/windows-build-tools/install/
http://gnuarmeclipse.github.io/openocd/
http://gnuarmeclipse.github.io/openocd/install/
http://gnuarmeclipse.github.io/debug/openocd/
http://gnuarmeclipse.github.io/plugins/install/