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

04/2019
TV & Multimedia

Diese Ausgabe als PDF kaufen

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

Stellenmarkt

Neuigkeiten

  • Finger weg

    Ein Temperatursensor verrät, ob Sie einen Gegenstand gefahrlos berühren dürfen. Beim Messen brauchen Sie dabei noch nicht einmal Kontakt zum Objekt.

  • Aus einer Hand

    Um einen Mikrocontroller zu programmieren, genügt ein Raspberry Pi. Wir zeigen, was Sie dazu noch benötigen.

  • Im Gleichtakt

    Synchronisierte Live-Loops und selbst erstellte Funktionen helfen dabei, Sonic Pi wie ein Live-Instrument zu spielen.

  • Mach mal

    Das Ftduino-Modul schlägt die Brücke zu Fischertechnik und ermöglicht es unter anderem, einen Drei-Achsen-Roboter anzusteuern.

  • Eleganter Diener

    Jeden Morgen dieselben Handgriffe, um zu sehen, ob die S-Bahn fährt und wie das Wetter wird? Ein cleverer Infoscreen auf RasPi-Basis automatisiert den Vorgang.

  • Bienenflüsterer

    Bienenzüchter, die ihre Völker besser kennenlernen möchten, müssen die fleißigen Insekten nicht pausenlos stören. Mit einem Raspberry Pi und verschiedenen Sensoren überwachen sie Temperatur, Luftfeuchtigkeit und bald auch das Gewicht des Bienenstocks.

  • Beerige Musik

    Für echten Hi-Fi-Sound braucht es mehr als einen kleinen Bluetooth-Brüllwürfel. Mit Volumio und einem Raspberry Pi rüsten Sie Ihre klassische Hi-Fi-Anlage mit smarten Funktionen auf.

  • Ton ab!

    Auf den ersten Blick erscheint der RasPi zu schwachbrüstig für den Betrieb leistungshungriger DAW-Software. Doch der Schein trügt.

  • Himbeer-TV

    Der DVB TV µHAT rüstet den Raspberry Pi mit einem DVB-T/T2-Tuner auf. Die deutsche TV-Landschaft schränkt dessen Möglichkeiten allerdings ein.

  • Git à la RasPi

    Mit wenigen Handgriffen zum Git-Hoster: Die dezentrale Arbeitsweise von Git erleichtert in Kombination mit der Netzwerkfähigkeit des RasPi das Verwalten von Quellcode.