STM32 programmieren und debuggen mit der Standard IDE Eclipse
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! Dieser 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
Die Pakete können normal installiert werden, später ist 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 den gewünschten Ordnerpfad entpacken. Danach kann es schon gestartet werden. Pfad für den workspace festlegen:
GNU MCU Eclipse plug-ins Installation
In der Menüleiste auf Help -> Eclipse Marketplace… In der Suchleiste gnu arm eingeben und bestätigen.
Und das plugin GNU ARM Eclipse 3.2.1 oder neuer mit install installieren. Dabei sind alle Häkchen zu setzen.
Es kann vor kommen das 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, installieren und neustarten.
GNU Arm Toolchain
Die Heruntergeladene GNU Arm Toolchain wenn nicht schon geschehen installieren und den Toolchain Pfad merken. Die Einrichtung erfolgt mittels des Testprojekts HelloWorld.
In Eclipse File -> New -> C Projekt -> STM32F4xx C/C++ Project -> Cross Arm GCC auswählen.
Einen Projektnamen vergeben, hier Project name: HelloWorld.
Den Ziel Prozessor auswählen, hier Target processor settings: STM32F407.
Danach Next -> Next -> Next.
Jetzt den Toolchain Pfad bis Ordner "bin" angeben, hier Toolchain path: D:\Programme\eclipse\GNU_ARM_Toolchain\5.4 2016q3\bin.
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.
Jetzt den OpenOCD Pfad bis zum Ordner "bin" eingeben, hier Folder: D:/Programme/eclipse/OpenOCD/bin und mit OK bestätigen.
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 Debbugíng 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)
Doppelklick -> STMicroelectronics STLink Virtual COM Port -> Details. Unter Eigenschaften -> Hardware-IDs die ID nach USB\VID merken, hier (… 0483&PID_374B …).
In dem OpenOCD Ordner -> scripts -> interface -> stlink-v2-1.cfg öffnen und die IDs vergleichen.
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 Project Ordner kopiert werden.
Wird ein Chip verwendet ist aus dem "cpu" Ordner ein Skript auszuwählen. Die Datei wird jetzt an unseres 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].
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
Registerkarte Common die Option Shared file mit dem Projektnamen auswählen, hier Shared file: \HelloWorld
Mit Apply speichern oder mit Debug speichern und debuggen.
Ordnerstruktur
Nach dem entpacken und installieren der Pakete erhält man folgende Ordnerstruktur:
Probleme
Probleme mit OpenOCD: OpenOCD konnte nicht starten -> Als Administrator (sudo) starten OpenOCD starte 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/