ST-Link und OpenOCD installieren

Inhaltsübersicht

  1. [Toolchain installieren] 
  2. [Eclipse und CDT installieren]
  3. [GNU ARM Eclipse installieren]
  4. [ST-Link und OpenOCD installieren sowie das erste Beispielprojekt]
  5. [Packs mit Mikrocontroller und Boarddaten laden]
  6. [Registerview auf Basis der Packs verwenden]
  7. [STM32CubeMX]
  8. [MinGW installieren]
  9. [unity verwenden]
  10. [Codedokumentation mit Doxygen, Eclox und GraphViz]

Wofür werden ST-Link und OpenOCD benötigt?

Softwareentwicklung ist nie fehlerfrei. Jedenfalls nicht beim ersten Versuch. Die gezielte Fehlersuche und Fehlerbehebung wird auch debugging genannt. Dafür stellt ARM für die STM32 Mikrocontroller die SWD-Schnittstelle zur Verfügung. Diese ermöglicht es, das erstellte Programm auf den Controller zu übertragen, schrittweise auszuführen und an vorher festgelegten Stellen anzuhalten. Dadurch kann sich der Programmierer durch neue Routinen Codezeile für Codezeile und jeweils Variablenwerte und Speicherstellen einsehen und gegebenenfalls verändern.
Bei der in diesem Blog vorgestellten Plattform (STM32F0 Discovery) ist die notwendige Hardware (ST Link V2) bereits auf dem Board enthatlten. Der sogenannte Debugger ist beim GCC mitgeliefert und heißt GDB. Durch Erweiterungen des ARM GCC Plugins für Eclipse wird eine Oberfläche zur Verfügung gestellt, welche die Funktionen des Debuggers gut unterstützt.

Installation des ST-Link

Zuerst muss der Treiber für das ST Link, welches sich in diesem Fall direkt auf dem Discovery-Board befindet geladen und installiert werden.

1. Unter [STSW LINK006], ganz unten kann die aktuelle Version herunterladen werden. Für dieses Blog wird die Windows 8 Variante ausgewählt.


2. Die ausgewählte Datei muss heruntergeladen werden.


3. Die Datei muss anschließend lokal auf der Festplatte entpackt werden. Zum Beispiel in C:\temp\stlink.

4. Die Datei stlink_winusb_install.bat ist als Administrator auszuführen.

Fertig. Der ST-Link V2 vom Discovery-Board ist installiert und kann nun verwendet werden. Falls das ST-Link ohne Eclipse verwendet werden soll, ist es sinnvoll von der oben genannten [Download-Seite] von ST noch das ST-Link Utility und gegebenenfalls das firmeware upgrade downzuloaden und zu installieren. Die Installation ist für die weiteren Discovery-Boards von ST identisch, da sie fast alle das ST-Link V2 enthalten. Eine Ausnahme bilden nur die Nucleo-Boards, welche die Version V2/1 verwenden und zur Zeit noch Probleme unter Windows 8 bereiten. Dazu wird es einen weiteren Blog-Eintrag geben, der die Nucleos etwas näher beschreibt.

Installation von OpenOCD

Das Tool [OpenOCD] ist wie alle anderen verwendeten Komponenten Open Source und kann von jedem herunterladen und compiliert werden.


Insbesondere der zweite Schritt ist für viele nur lästig oder gar nicht so einfach möglich. Deshalb gibt es neben dem Quellcode von OpenOCD auch fertige Binäries für Windows. Diese werden durch das Projekt ARM GCC Plugin zur Verfügung gestellt.

1. Herunterladen des passenden OpenOCD-Paketes für Windows (hier 64Bit) unter [OpenOCD Binäries].


2. Ausführen der Heruntergeladenen Datei. Auswahl der Installationssprache, hier Deutsch.


3. Den Willkommensdialog bestätigen.


4. Die Lizenzvereinbarungen Annehmen. Oder Abbrechen und ein kommerzielles Tool verwenden, welches die eigenen Wünsche erfüllt.


5. Entscheiden, welche Schritte die Installation durchführen soll.


6. Den Speicherort auswählen. In diesem Fall wurde der Ort gewählt, in dem auch die Installation des ARM GCC sowie Eclipse statt gefunden hat. Wichtig ist die Verwendung eines Ordners, der keine Leerzeichen enthält.


7. Die Installation wird durchgeführt.


8. Fertig. Bestätigung, dass OpenOCD installiert wurde.

Nun ist OpenOCD installiert, kann aber noch nicht so ohne weiteres verwendet werden. Der Installationsort muss in Eclipse noch eingetragen werden. Falls OpenOCD ohne Eclipse verwendet werden soll muss der Path-Variable von Windows noch der Ort der OpenOCD-Installation hinzugefügt werden.

Anpassungen für das ARM GCC Plugin für OpenOCD

Da bei der Installation ein benutzerdefiniertes Verzeichnis für OpenOCD gewählt wurde, muss dieses auch dem ARM GCC Plugin für Eclipse mitgeteilt werden. Dafür sind zwei Umgebungsvariablen zu setzen.

1. Eclipse öffnen und unter dem Menüpunkt Windows die Preferences öffnen.




2. Unter Run/Debug auf String Substitution gehen und auf der rechten Seite openocd_path mit einem Doppelklick auswählen.

3. Den Value mit Browse auf den Bin-Ordner von OpenOCD einstellen. In diesem Fall ist dies C:\stm32tc\OpenOCD\bin .


4. Die Variable openocd_executable bleibt bei der Standardbezeichnung openocd und kennzeichnet den Dateinamen der ausführbaren datei von OpenOCD.

Nach der Installation der Toolchain, Eclipse, ARM GCC Plugin, ST-Link-Treiber, OpenOCD und den eben gezeigten Einstellungen sollte es nun möglich sein, den Mikrocontroller zu programmieren.
Es folgt ein kleines Beispiel welches es ermöglicht die gesamte Toolkette nun zu überprüfen.

Das erste Beispielprojekt

Eclipse hat ein paar wichtige sogenannten perspectives. Dies sind jeweils thematisch zusammengehörige views, welche wiederum einzelne Fenster innerhalb der Entwicklungsumgebung sind. Für ein C/C++-Projekt muss die C/C++-perspective geöffnet sein. Dies kann oben rechts kontrolliert werden. Falls diese nicht ausgewählt ist, kann unter Window , Open Perspective, Other die C/C++ ausgewählt werden.

Für ein neues Projekt müssen nun folgende Schritte ausgeführt werden.

1. Über das Menü File, Untermenü New den Punkt C Project auswählen.


2. Für das Beispiel den richtigen Prozessor links in der Mitte auswählen. Im Blogbeispiel also STM32F0xx C/C++ Project, da ein STM32f0 Discovery-Board verwendet wird. Als Name verwenden wir HelloWorld. Die Eingabe wird mit Next bestätigt.

3. Die Einstellungen bleiben in den Standardeinstellungen. Next auswählen.


4. Die vorgeschlagenen Ordner werden übernommen.


5. Die vorgeschlagenen Configurations werden beide ausgewählt (für dieses einfache Beispiel allerdings nicht notwendig. Es reicht debug).



6. Bei der Auswahl der GNU ARM  Toolchain ist wieder etwas auszuwählen. Beim Namen der Toolchain ist GNU Tools for ARM  Embedded Processors (arm-none-eabi-gcc) auszuwählen. Dies entspricht der im ersten Schritt installierten Toolchain. Unter Toolchain path muss der Installationsort der Toolchain (siehe erster Punkt im Blog) ausgewählt werden. In unserem Beispiel C:\stm32tc\.



Das erste Project ist nun fertig. Durch das ARM GCC Plugin wird gleich ein Beispielprogramm inkl. debug-Möglichkeit mit geladen. Dadurch kann sofort ein Test der Installation erfolgen.


Folgende Einstellungen sind zum debuggen notwendig. Diese müssen für jedes neue Projekt wiederholt werden.

1. Unter Debug Configurations einige wichtige Einstellungen vornehmen.


2. In dem geöffneten Fenster auf GDB OpenOCD Debugging doppelklicken und somit eine neue Configuration anlegen. Diese bekommt einen Namen, der den Projektnamen enthält.

2. Unter C/C++ Application die ausführbare Datei auswählen die geladen werden soll. Diese ist im Beispiel unter dem Pfad Debug mit dem Projektnamen und der Endung elf zu finden. Also Debug/HelloWorld.elf.



3. Unter dem Reiter Debugger und Config options eine Erweiterung vornehmen. Dort -f board/stm32f0discovery.cfg eintragen. Dies ist notwendig, damit OpenOCD den verwendeten Mikrocontroller kennt. Hier muss ein Board oder Controller ausgewählt werden, der durch OpenOCD unterstützt wird (im Ordner board der OpenOCD-Installation zu finden),



4. Alle anderen Einstellungen belassen und Apply auswählen.

5. Dann kann bereits der Debug Button gedrückt werden.



6. Es wird nun das aktuelle Projekt compiliert und gelinkt. Anschließend wird die Perspective zum Debuggen geöffnet.Es wird das Programm an den Mikrocontroller übertragen und die Ausführung gestartet und bei der main-Routine angehalten.

7. Oben kann durch Klick auf das Play-Zeichen nun der Programmablauf gestartet werden. Es werden unten ein paar Nachrichten angezeigt, die zeigen, dass das Programm läuft.


Wenn die Installation der gesamten Toolkette erfolgreich war, wird unten jede Sekunde ein neuer Wert angezeigt, der vom Mikrocontroller gesendet wird. Durch Anwendung des Pausesymbols kann das Programm angehalten werden und mit dem Roten Viereck kann das Debuggen beendet werden.

An dieser Stelle wird dazu aufgerufen, viel mit der Umgebung zu spielen. Alle Fenster kennzulernen und einfach mit Eclipse zu arbeiten.

Der Programmierspaß kann beginnen. Jeder kann nun beliebige Änderungen an der Software vornehmen und seine Phantasie spielen lassen.

Viel Spaß.