STM32-Entwicklung mit CubeMX und Eclipse

© Pavel Timofeev, 123RF

Sparsam und günstig

Die STM32-Chips von STMicroelectronics basieren auf dem 32-Bit-ARM-Prozessorkern und bilden eine weitgefächerte Familie. Die preisgünstigen und stromsparenden Mikrocontroller eignen sich für zahlreiche Projekte. Dieser Artikel steigt in die STM32-Entwicklung speziell unter Linux ein.

32-Bit-Mikrocontroller der STM32-Linie bieten bei geringen Preisen eine außerordentliche Leistungsfähigkeit. So findet sich der mit maximal 48 MHz getaktete STM32F030F4P6 im durchaus noch lötbaren TSSOP-20-Gehäuse beim chinesischen Amazon-Konkurrenten Aliexpress für rund 40 Cent. Den maximal mit 72 MHz getakteten STM32F103C8T6 mit USB- und CAN-Unterstützung gibt es dort als kompaktes Modul ähnlich dem Arduino Nano für 2,06 Euro inklusive Versand.

Ein weiterer Vorteil gegenüber verbreiteten 8-Bit-Mikrocontrollern liegt in der SWD-Programmierschnittstelle. Sie benötigt nur drei Leitungen (Daten, Takt, Masse und gegebenenfalls die Versorgungsspannung) und ermöglicht nicht nur das Programmieren, sondern auch das komfortable Debuggen von Programmen über das GNU-Debugger-Projekt GDB. Programmieradapter gibt es ebenfalls sehr günstig; ein STLink-V2-kompatibler Adapter in kompakter USB-Stick-Form fand sich für knapp 2,50 Euro bei Aliexpress.

Allerdings liegt auch die Einstiegshürde höher: Aus Rücksicht auf die gerade bei mobilen Geräten geforderte geringe Leistungsaufnahme müssen verwendete Komponenten wie GPIOs oder A/D-Wandler erst einmal aktiviert beziehungsweise mit Takt versorgt werden; zudem steigt gerade aufgrund des Funktionsumfangs die Anzahl der Register immens.

Auch die komplexeren internen Strukturen wirken sich auf die Programmierschnittstelle aus. Beispielsweise sind viele Funktionseinheiten über Busse angeschlossen, die mit teilweise deutlich geringeren Taktraten laufen als der Prozessorkern. Daher gibt es etwa für die GPIOs spezielle Register, mit denen sich einzelne Bits setzen oder umschalten lassen, um die sonst üblichen Read-Modify-Write-Zugriffe zu vermeiden.

Allerdings einigte sich die Industrie bei den von vornherein auf die Programmierung unter Hochsprachen ausgelegten ARM-basierenden Mikrocontrollern auf einheitliche Programmierschnittstellen wie CMSIS. Hat man sich einmal eingearbeitet, lässt sich das Wissen auch für Controller anderer Hersteller anwenden. Auch innerhalb der Palette eines Herstellers wurde viel vereinheitlicht.

So lassen sich zum Beispiel in vielen Fällen Programme ohne größere Änderungen am Quelltext zwischen STM32Fx-Controllern austauschen. Auch physisch besteht eine weitgehende Kompatibilität: So arbeitet ein STM32F103C8 anschlusskompatibel zu einem STM32F105C8. Als weitgehend vereinheitlichende Abstraktionsschicht kam bisher die STM32 Standard Peripheral Library zum Einsatz, die künftig durch die HAL-Bibliothek (Hardware Abstraction Layer) ersetzt werden soll.

Die Controller bieten relativ viele Einstellmöglichkeiten hinsichtlich der Taktquellen. Das ist schon deshalb erforderlich, weil bestimmte Funktionseinheiten – etwa die USB-Schnittstelle oder die A/D-Wandler – je nach Konfiguration recht eng spezifizierte Eingangstaktfrequenzen benötigen. Um dem Anwender diese recht komplexen Vorplanungen abzunehmen, stellt ST mit CubeMX ein Programm zur Verfügung, das die grafische Konfiguration aller Ressourcen ermöglicht und daraus ein C-Programmprojekt samt den nötigen Initialisierungen erstellt.

Allerdings erstellt CubeMX nur Projekte für kommerzielle Entwicklungsumgebungen. Dieser Artikel beschreibt, wie Sie (nicht nur unter Linux) dieses Programm nutzen, um ein Projekt für Eclipse zu erstellen und mit OpenOCD zu debuggen und zu programmieren.

Benötigte Programme und Geräte

Als Zielplattform dient die bei diversen Online-Händlern erhältliche STM32VL-Discovery-Evaluierungsplattform. Alternativ ordern Sie über Aliexpress direkt in China einen ST-Link-V2-Programmieradapter (etwa 2,50 Euro) und ein STM32F103C8T6-Board (rund 2,00 Euro).

Möchten Sie erst einmal ganz ohne Hardware-Anschaffungen auskommen, können Sie diese Anleitung auch mit einer Qemu-Emulation nachvollziehen [1]. Zusätzlich benötigen Sie noch einen USB-Seriell-Adapter (etwa basierend auf dem FT232); Linux-Anwender sollten auf die Unterstützung des spezifischen Chips achten.

Software

Anwendungsseitig benötigen Sie die Arm-none-eabi-Entwicklungswerkzeuge für GCC (Version 4.9+) und GDB. Linux-Anwender installieren beides in der Regel über die Paketverwaltung, für andere Systeme erhalten Sie die Tools über die Projektseite [2]. Die Installation für die gängigsten Betriebssysteme beschreibt die Webseite zu GNU ARM Eclipse [3].

Da wir in diesem Artikel mit einem automatisch generierten Makefile arbeiten, sollten Sie (im Widerspruch zum Hinweis am Ende der zugehörigen Anleitung) sicherstellen, dass sich der Compiler mit arm-none-eabi-gcc aus der Shell aufrufen lässt. Klappt das nicht, dann müssen Sie entweder die Variable $PATH oder jeweils das entsprechende Makefile anpassen.

Daneben brauchen Sie noch Git und Python (für den Konverter), eine Java-Laufzeitumgebung (für CubeMX und Eclipse), OpenOCD, Eclipse 4.5+ mit installiertem CDT-Plugin sowie gegebenenfalls ein Programm für die serielle Schnittstelle, wie etwa Gtkterm oder Screen.

Im Folgenden beschreiben wir die nötigen Schritte zum Einrichten einer Entwicklungsumgebung mit Fokus auf Linux. Dazu gehört das Einrichten des STLink-Adapters sowie dessen Konfiguration für Udev. Dazu legen Sie mit administrativen Rechten die Datei /etc/udev/rules.d/99-stlink.rules mit den entsprechenden Udev-Regeln an (Listing 1) und weisen anschließend das System an, diese einzulesen (Listing 2).

Listing 1

 

ATTRSidVendor=="0483", ATTRSidProduct=="3744", MODE="0666"

Listing 2

 

$ sudo udevadm control --reload-rules
$ sudo udevadm trigger

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 7 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Raspberry Pi Geek kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

Aktuelle Ausgabe

06/2019
Home Improvement

Diese Ausgabe als PDF kaufen

Preis € 9,99
(inkl. 19% MwSt.)

Stellenmarkt

Neuigkeiten

  • Verschlungene Pfade

    Mit Schleifen, Fallunterscheidungen und Funktionen programmieren Sie komplexe Skripte auf einfache und elegante Weise.

  • Extrem genau

    Mit einem A/D-Wandler messen Sie bei Bedarf Spannungen. Der MCP3424 macht dabei konstruktionsbedingt eine gute Figur.

  • Verbindungsaufnahme

  • Süßer Wecker

    Dem RasPi fehlen sowohl eine Echtzeituhr als auch ein BIOS, ein zeitgesteuertes Wecken erfordert also Zusatzkomponenten. Hier springt der Witty Pi Mini in die Bresche, ein µHAT von UUGear.

  • Windows to go

    Das Aufsetzen zuverlässiger und sicherer Remote-Desktop-Lösungen erfordert einiges Know-how. Die RasPi-basierte Pinbox von Pintexx reduziert den Konfigurationsaufwand auf ein Minimum.

  • Prima Klima

    In Museen ist es Pflicht, zu Hause nützlich: das permanente Prüfen und zentrale Erfassen der Feuchtigkeit und Temperatur in Räumen.

  • Auf einen Blick

    Ein maßgeschneiderter Infoscreen auf RasPi-Basis mit stromsparendem E-Ink-Display zeigt Termine, Bilder, Mitteilungen und Wetterinformationen an.

  • Sanft berührt

    Mit einem RasPi und dem Controllermodul PiXtend lassen sich mühelos Roboterarme ansteuern und deren Bewegung automatisieren.

  • Popcorn-Kino

    Mit Kodi 18.0 unterstützt LibreELEC 9.0 jetzt die von vielen Streaming-Diensten genutzte DRM-Verschlüsselung. Die Integration von Netflix, Amazon und Co. erfordert allerdings Handarbeit.

  • So nah und doch so fern

    Der RasPi kommt häufig als Server oder Steuerrechner für spezielle Zwecke zum Einsatz. Mit Anydesk erhalten Sie dazu eine Steuersoftware mit grafischer Oberfläche.