Change language

Zuletzt besucht

Ausgewählte Projekte

Web Applikationen

Links

Andere Projekte

Meta

Ein Tutorial, um das STM32F429 Discovery Board auf Mac OSX zum laufen zu bekommen

May 2016

Eine ganze Weile her hatte ich mir ein stm32f4 Discovery Board gekauft, mit der Absicht mich mit 32-Bit Mikorcontroller Programmierung auseinander zu setzen. Der Chip auf dem Board, der stmf429, ist ein Cortex-M4 Kraftprotz mit 2 Megabyte Flash und 256 Kilobyte RAM, sowie unzählbare Peripheriegeräte und eingebauten Logikbausteinen um CRC Prüfwörter zu berechnen, LCD-TFT Displays anzusteuern und vieles mehr. Es ist ein gutes Board für Anfänger.

Wie alle Grafiken auf dieser Seite, klicke um in voller Größe zu sehen.

Zu der Zeit hatte ich mir eine Programmierumgebung aufgebaut, indem ich kostenlose Software-Tools zusammensetzte, diesem Tutorial folgend. Es reichte aus, um eine LED auf der Platine blinken zu lassen, aber als ich mit den Code-Beispielen von ST herumspielen wollte, kam ich nicht weiter. Beim Kompilieren kamen nur wenige Fehler. Aber mit jedem behobenen Fehler traten 10 weitere Kompilierfehler ans Licht. Das Problem lag nicht im Quellcode, sondern an der Programmier-IDE, die ich mir aufgebaut hatte. Also tat ich das Board beiseite und widmete mich anderen Projekten.

So macht man es richtig

Ungefähr ein Jahr später, am Anfang dieses Monats, grub ich mein Discovery Board wieder aus. Ich wusste, dass meine IDE wieder fehlschlagen würde also suchte ich nach Alternativen.
Nach einer Websuche fand ich eine Seite auf ST’s Homepage, wo mehrere Programmier-Umgebungen gelistet sind, die kompatibel mit deren Mikrocontroller sind. Ich schrieb alle nieder, die vielversprechend schienen:

Da ich ein Macbook verwende mit OSX El Capitan (10.11), hatte ich nur eine Wahl – das OpenSTM32 System Workbench. Es basiert auf freier Software, darunter die Eclipse IDE. Um das Paket zu installieren muss man lediglich den Installer herunterladen und laufen lassen.

Zunächst erhielt ich eine Fehlermeldung, dass mein Java RE (Runtime Environment) zu alt sei, obwohl meine Systemeinstellungen mir eine höhere Version als die benötigte anzeigte. Ich löste das Problem, indem ich das neuste Java SE Development Kit installierte, welches anders ist als die Standard Java Installation.

Von da an lief alles wie geschmiert. Was mir am meisten am System Workbench gefiel war das ausführliche Wiki auf der Homepage, welches sehr hilfreich ist. Alles was du zum Anfangen brauchst ist dort beschrieben.

Dein erstes Codeprojekt

Für dein erstes Programm empfehle ich das „Hello world“ der Elektronikwelt – eine LED zum Blinken bringen. Dafür musst du zunächst das STM32CubeF4 Software Paket herunterladen. Dies ist eine Sammlung von Softwarebeispielen, die für STM32F4 Mikrocontroller geschrieben sind.

Während das herunterlädt werden wir ein neues C-Projekt in Eclipse mit dem Namen „blink_example“ erstellen. Klicke dazu auf „File -> New -> C Project“. Wähle dann “Ac6 STM32 MCU Project” unter “Executable” aus.

Klicke auf „Next“ bis du ein Board auswählen sollst. Du wirst zwei STM32F429I Discovery Boards finden. Das „DISC1“ ist die neuere Version, welche “ST-Link/V2-1” verwendet. “DISC0” basiert auf “ST-Link/V2”. Der Name deiner Platine sollte auf dem Board selbst stehen. Meins ist ein DISC0.

Gehe auf „Next“ und wähle “Hardware Abstraction Layer” aus. Falls du das Paket noch nicht installiert hast, wird Eclipse dich darum fragen. Installiere es.

Zum Schluss, klicke „Finish“ und lasse die IDE dein Projekt aufbauen.

Öffne dein frisch heruntergeladenes CubeF4 Paket und gehe zu „/Projects/STM32F429I-Discovery/Examples/GPIO/GPIO_EXTI“.
Nun musst du vier Dinge tun:

  1. Kopiere den Inhalt von “GPIO_EXTI/Src” und füge es in “blink_example/src” ein. Überschreibe doppelte Dateien.
  2. Kopiere den Inhalt von “GPIO_EXTI/Inc” und füge es in “blink_example/inc” ein. Überschreibe doppelte Dateien.
  3. Kopiere “startup_stm32f429xx.s” aus “GPIO_EXTI/ SW4STM32/” und füge es in “blink_example/startup ” ein. Überschreibe doppelte Dateien.
  4. Kopiere “ STM32F429ZITx_FLASH.ld” aus “GPIO_EXTI/ SW4STM32/STM32F429I-Discovery/” und füge es in das Stammverzeichnis “blink_example/” ein. Überschreibe doppelte Dateien.

Als nächstes, öffne „main.c“ im „src“ Ordner in Eclipse und klicke den „Build All“ Knopf in der oberen Symbolleiste. Du musst dies nur für das erste Kompilieren tun. Für weitere Builds musst du nur den „Build“ Knopf links davon klicken.

Alles sollte fehlerfrei kompilieren. Falls doch Fehler auftreten und du sie nicht loswirst, schrieb mir eine E-Mail.

Das Programm auf den Chip laden

Damit dein Computer mit dem Discovery Board sprechen kann, musst du eine neue „Debug Configuration“ erstellen. Klicke dafür auf den „Debug“ Knopf in der Symbolleiste und dann auf „Debug Configurations“.

Im Fenster, wähle “Ac6 STM32 Debugging” aus und klicke auf „New“. Zum Schluss musst du nur noch auf „Debug“ unten rechts klicken. Wenn du diese Konfiguration das nächste Mal starten willst, wird sie direkt im drop-down Menü des „Debug“ Knopfes erhältlich sein.

Wenn du eine Fehlermeldung erhältst, stecke das Discovery Board aus, wieder ein, und starte die Debug Configuration erneut. Falls alles funktioniert und du im Debug Fenster bist, klicke auf den „Resume“ Knopf in der Symbolleiste um dein Programm zu starten.

Drücke nun auf den „USER“ Knopf auf der Platine. Die grüne LED „LD3“ sollte dabei an oder aus gehen.

Und das war alles!