Schlagwort-Archive: STM32F407

ARM Discovery Board STM32F4 unter MAC OS X bzw. El Capitan programmieren

Da der Speedcontroller aus meinen Longboard Projekten auf einem ARM Microchip basiert, begann ich mich für die Programmierung der ARM Chipfamilie zu interessieren. Schon nach ersten Recherchen im Netz wurde mir klar, dass Controllerborads mit ARM Chips deutlich mehr leisten können als z.B. ein Arduino, die Programmierung dieser Mikrocontroller aber dafür auch deutlich mehr ins Eingemachte geht als bei Arduino oder Raspberry und Co. Das beginnt schon bei der Zusammenstellung der erforderlichen Softwaretools um überhaupt mit der Programmierung beginnen zu können. In dem nachfolgenden Artikel gebe ich Euch einen Überblick darüber, welche Software Komponenten Ihr benötigt und wie Ihr sie auf einem Mac installieren könnt. Vieles davon ist auch (mit ein paar Anpassungen) auf Linux oder Windows übertragbar.

Bevor man ein Discovery Board (z.B. STM32F407) oder Nucleo Board mit ARM Chip programmieren kann, müssen einige Vorbereitungen getroffen werden, die sich je nach Betriebssystem Eures Rechners unterscheiden. Meine Entwicklungsumgebung soll unter MAC OS X El Capitan laufen. Grundsätzlich werden aber alle Elemente auch unter Linux oder Windows benötigt. Nur die Installationsschritte und teilweise die Bezugsquellen unterscheiden sich ein wenig. Alle von mir im weiteren beschriebenen Komponenten sind Open Source und damit frei und kostenlos verwendbar.

Die Arbeit an diesem Artikel ist noch nicht abgeschlossen. Ich überlege auch, eine kleine Artikelserie zur Programmierung von Mikrocontrollern mit ARM Chips zu schreiben. Wenn Euch das interessiert, oder Ihr Fragen zu diesem Artikel habt, dann schreibt gerne in die Kommentare.

Quellen:
https://abboudscorner.wordpress.com
YouTube Microcontroller Tutorial von Ultr@FX

Folgende Softwarekomponenten sind erforderlich:

  1. HomebrewHombrew ist ein Package Manager für Mac OS X, der mit „apt-get“ unter UBUNTU Linux vergleichbar ist. Wir benötigen ihn um die sogenannte ARM Toolchain unter OS X zu installieren. Unter http://brew.sh könnt Ihr alle Details nachlesen.
    Einige der nachfolgenden  Installationsschritte müssen im Terminal im Kommandozeilenmodus vorgenommen werden. Startet das Terminal indem Ihr die cmd + space Tasten drückt und danach „Terminal“ eingebt. Anschließend tippt folgendes Kommando in das sich öffnende Terminal Fenster ein (Ihr könnt es natürlich auch über cmd + „c“ und cmd + „v“ in das Terminal Fenster kopieren):

    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

    Nachdem Ihr „Enter“ betätigt habt, installiert sich der Paketmanager automatisch.

  2. Die ARM ToolchainDie GNU ARM-Toolchain ist eine Sammlung von Compilern und zum Übersetzen von Programmen für ARM-basierte Mikrocontroller. Sie wird benötigt um den in „C“ programmierten Programmcode in den für den Mikrocontroller lesbaren „Maschinencode“ zu übersetzen. Das ist es übrigens, was Compiler im Allgemeinen machen. Sie übersetzen Programmcode aus einer Programmiersprache in den Maschinencode, den die Hardware, auf der das Programm später laufen soll, versteht.

    Nachdem Homebrew läuft, kann die ARM Toolchain nun sehr einfach installiert werden. Gebt einfach die folgenden Kommandozeilen in das Terminal Fenster ein.

    brew tap PX4/homebrew-px4
    brew update
    brew install gcc-arm-none-eabi

    Umzug prüfen, ob die Installation erfolgreich war, tippt folgendes ein.

    arm-none-eabi-gcc --version

    Folgender Output sollte erscheinen.

    Bildschirmfoto 2016-07-11 um 21.18.13

    Homebrew installiert die ARM Toolchain übrigens in eine Art verstecktes Verzeichnis, das man im Finder nicht direkt direkt sehen kann. Der Pfad lautet: „/usr/local/Cellar/gcc-arm-none-eabi/20140805/bin/“

    Wenn Ihr es dennoch im Finder aufrufen möchtet dann geht das, wenn man in der Finder Menüleiste „Gehe zu“ auswählt und dann auf „Gehe zum Ordner…“ klickt. In das dann erscheinende Fenster gebt Ihr einfach den Pfad „/usr/local“ ein. Dann springt der Finder in den entsprechenden Verzeichnisknoten und Ihr könnt Euch, wie gewohnt, weiter durch die Verzeichnishierarchie klicken.

    Der Pfad zur Toolchain wird später noch mal wichtig, wenn wir sie in die grafische Programmierumgebung „Eclipse“ einbinden. Ich empfehle Euch die komplette Verzeichnisstruktur ab „gcc-arm-note-eabi“ an eine einfacher zu erreichende Stelle zu verschieben (z.B. in einen neuen Ordner in Eurem Userverzeichnis). Sonst wird es später schwierig, die Toolchain in Eclipse einzubinden.

  3. Der DebuggerEinen Debugger benötigt man um bei der Programmierung Fehler in seinem Programmcode aufspüren zu können. Da wir mit Eclipse als integrierter Entwicklungsumgebung (=IDE) arbeiten möchten, benötigen wir einen Debugger, der zu Eclipse passt und der in der Lage ist ein C oder C++ Programm zu debuggen, das für einen ARM Mikrocontroller geschrieben wird. Eine sehr gute, leicht zu installierende und kostenlose Variante ist das „GNU ARM Eclipse OpenOCD“ Toolset. Weitere Informationen dazu, sowie den Downloadlink und Installationshinweise findet Ihr unter http://gnuarmeclipse.github.io/openocd/.
  4. Die Entwicklungs- bzw. Programmierumgebung Eclipse CDTGrundsätzlich könnten wie den Programmcode in einem beliebigen Texteditor schreiben, ihn kompilieren lassen und ihn dann auf den Mikrocontroller hochladen um ihn dort ausführen zu lassen. Das Schreiben des Programmcodes in einem Texteditor ohne z.B. ein vernünftiges Debugging zu haben ist aber sehr unpraktisch und umständlich.

    Deshalb gibt es sogenannte IDEs, also integrierte Entwicklungsumgebungen mit zahlreichen Funktionen, die einem Programmierer das Leben deutlich einfacher machen für alle gängigen Programmiersprachen. Eine sehr bekannte und universell einsetzbare IDE ist Eclipse, die z.B. in der Java Programmierung sehr weit verbreitet ist und mit Eclipse CDT auch eine sehr brauchbare C und C++ Variante bietet. Nachlesen und downloaden könnt Ihr alles unter https://eclipse.org/cdt/. Eclipse läuft übrigens auf allen gängigen Betriebssystemen.

  5. Die Konfiguration von Eclipse und die Einrichtung erster ProjekteWir haben jetzt alle grundsätzlich erforderlichen Komponenten installiert und vorbereitet. Da Eclipse aber eine sehr universelle Entwicklungsumgebung ist, müssen jetzt noch einige Einstellungen in Eclipse vorgenommen werden, damit ein Programmcode ordentlich debugged, kompiliert und auf den Mikrocontroller hochgeladen werden kann.

    Ich werde dazu später noch einen ausführlicheren Artikel schreiben. Bei meinen Recherchen zum Thema ARM Mikrocontroller bin ich aber auf eine sehr hilfreiche Tutorialreihe bei YouTube gestoßen, die ich selbst auch schon komplett durchgearbeitet habe. Nico (alias Ultra@FX) erklärt in dieser Reihe alles von den absoluten Basics der C Programmierung, bis zur Einrichtung von Eclipse und gibt eine ausführliche Einführung in die STM32 Mikrocontrollerwelt über kleinere Lernprojekte.

    Die beiden Folgen in denen er die Konfiguration von Eclipse erklärt findet Ihr hier und hier. Sie bauen zwar auf Linux auf, die Einrichtung in Eclipse ist aber für alle Betriebssysteme gleich und daher auch einfach auf Windows und Mac OS übertragbar. Ich empfehle Euch grundsächlich Nico’s komplettes Tutorial durchzuarbeiten um die Grundlagen der Mikrocontrollerprogrammierung zu verstehen.

  6. CubeMXCubeMX ist ein Softwaretool von ST, mit dem Ihr die Programmierung der Clock und der Register für die Input- und Output Register des ARM Chips bzw. des Mikrocontrollers deutlich komfortabler vornehmen könnt, als wenn Ihr es „zu Fuß“, nur mit der ST Library macht. CubeMX kann direkt in Eclipse eingebunden werden und bringt eine grafische Benutzeroberfläche mit, die die o.g. Programmiervorbereitungen deutlich vereinfachen. Ich empfehle aber, die ersten Schritte ohne CubeMX zu machen und ihn erst zu nutzen, wenn Ihr die Grundzüge der Mikrocontrollerprogrammierung verstanden habt.