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! 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.

Datei:Beispiel.jpg

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.

Datei:Beispiel.jpg

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.

Datei:Beispiel.jpg

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 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.

Datei:Beispiel.jpg

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.

Datei:Beispiel.jpg

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.

Datei:Beispiel.jpg

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)

Datei:Beispiel.jpg

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

Datei:Beispiel.jpg

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

Datei:Beispiel.jpg

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.

Datei:Beispiel.jpg

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].

Datei:Beispiel.jpg

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

Datei:Beispiel.jpg

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

Datei:Beispiel.jpg

Mit Apply speichern oder mit Debug speichern und debuggen.

Datei:Beispiel.jpg

Ordnerstruktur

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

Datei:Beispiel.jpg

Probleme

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/