STM32 programmieren und debuggen mit der Standard IDE Eclipse: Unterschied zwischen den Versionen

Aus Nicki Wiki
Zur Navigation springen Zur Suche springen
Zeile 29: Zeile 29:
== GNU MCU Eclipse plug-ins Installation ==
== 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.<br />
In der Menüleiste auf '''Help''' -> '''Eclipse Marketplace…''' In der Suchleiste '''gnu arm''', ab Eclipse Oxygen '''gnu mcu''' eingeben und bestätigen.<br />
Und das plugin GNU MCU Eclipse 4.2.1 oder neuer mit install installieren. Dabei sind alle Häkchen zu setzen.
Das plugin GNU MCU Eclipse 4.2.1 oder neuer mit install installieren; dabei sind alle Häkchen zu setzen.


[[Datei:Beispiel.jpg]]
[[Datei:Beispiel.jpg]]


Es kann vor kommen das die Installation über den Marketplace fehlschlägt. Eine andere Option ist die manuelle Installation.<br />
Es kann vorkommen, dass die Installation über den Marketplace fehlschlägt. Eine andere Option ist die manuelle Installation.<br />
Download [https://sourceforge.net/projects/gnuarmeclipse/?source=typ_redirect GNU ARM Eclipse plug-in] bzw. [https://github.com/gnuarmeclipse GNU MCU Eclipse]
Download [https://sourceforge.net/projects/gnuarmeclipse/?source=typ_redirect GNU ARM Eclipse plug-in] bzw. [https://github.com/gnuarmeclipse GNU MCU Eclipse]


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


[[Datei:Beispiel.jpg]]
[[Datei:Beispiel.jpg]]


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


[[Datei:Beispiel.jpg]]
[[Datei:Beispiel.jpg]]


Und mit '''Finish''' bestätigen.<br />
und mit '''Finish''' bestätigen.<br />
Auf den Hammer klicken, das Programm sollte nun erfolgreich compilieren!
Auf den Hammer klicken, das Programm sollte nun erfolgreich compilieren!


== GNU MCU Eclipse OpenOCD Debugging ==
== 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.<br />
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.<br />
Das Heruntergeladene GNU MCU Eclipse OpenOCD wenn nicht schon geschehen installieren und den OpenOCD Pfad merken.<br />
Das heruntergeladene GNU MCU Eclipse OpenOCD, wenn nicht schon geschehen, installieren und den OpenOCD Pfad merken.<br />
In '''Eclipse''' -> '''Window''' -> '''Preferences''' -> '''Run/Debug''' -> '''OpenOCD''' auswählen.<br />
In '''Eclipse''' -> '''Window''' -> '''Preferences''' -> '''Run/Debug''' -> '''OpenOCD''' auswählen.<br />
Ab '''Eclipse Oxygen''' -> '''Window''' -> '''Preferences''' -> '''MCU''' -> '''Global OpenOCD Path'''.<br />
Ab '''Eclipse Oxygen''' -> '''Window''' -> '''Preferences''' -> '''MCU''' -> '''Global OpenOCD Path'''.<br />
Zeile 72: Zeile 72:


== OpenOCD Debugging Konfigurationsdatei ==
== 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.<br />
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.<br />
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)'''  
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)'''  


Zeile 85: Zeile 85:
[[Datei:Beispiel.jpg]]
[[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'''.<br />
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'''.<br />
Im nächsten Schritt wird die Debbugíng Konfigurationsdatei ausgewählt.<br /> Da hier ein Discovery-Board verwendet wird, kann das skript unter '''OpenOCD''' -> '''scripts''' -> '''board''' -> '''stm32f4discovery.cfg''' in den Project Ordner kopiert werden.
Im nächsten Schritt wird die Debbugíng Konfigurationsdatei ausgewählt.<br /> Da hier ein Discovery-Board verwendet wird, kann das Skript unter '''OpenOCD''' -> '''scripts''' -> '''board''' -> '''stm32f4discovery.cfg''' in den Projectordner kopiert werden.


[[Datei:Beispiel.jpg]]
[[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.
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]'''.
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]]
[[Datei:Beispiel.jpg]]


Zurück in '''Eclipse''' -> '''Run''' -> '''Debug Configuration...''' -> '''GDB OpenOCD Debugging''' -> '''HelloWorld Debug'''<br />
Zurück in '''Eclipse''' -> '''Run''' -> '''Debug Configuration...''' -> '''GDB OpenOCD Debugging''' -> '''HelloWorld Debug'''<br />
Registerkarte '''Debugger''' -> '''OpenOCD Setup''' den Dateinamen mit der Option -f für File in Config options eintragen, hier '''Config options: -f stm32f407g.cfg'''
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]]
[[Datei:Beispiel.jpg]]


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


[[Datei:Beispiel.jpg]]
[[Datei:Beispiel.jpg]]

Version vom 4. Januar 2018, 15:39 Uhr

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.

Datei:Beispiel.jpg

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.

Datei:Beispiel.jpg

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.

Datei:Beispiel.jpg

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.

Datei:Beispiel.jpg

Danach Next -> Next -> Next.
Jetzt den Toolchainpfad 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.
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.


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

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 Projectordner kopiert werden.

Datei:Beispiel.jpg

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

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