Ich habe ein STM32 Discovery Board und möchte es unter Linux programmieren können.
Was ist der einfachste Weg, dies zu tun?
Ich habe ein STM32 Discovery Board und möchte es unter Linux programmieren können.
Was ist der einfachste Weg, dies zu tun?
Antworten:
Eine einfache Möglichkeit zum Programmieren und Debuggen des STM32 Discovery-Boards (oder eines STM32 mit einem ST-Link-Programmierer) ist die Verwendung des "stlink" -Projekts https://github.com/texane/stlink (OpenOCD scheint jedoch ebenfalls beliebt zu sein).
ST Nucleo-Karten werden auch als USB-Flash-Gerät angezeigt. Sie müssen also nicht einmal stlink
die Datei kopieren.
Es gibt einige gute Seiten zum Entwickeln für die STM32-Erkennung unter Linux, z. B. http://gpio.kaltpost.de/?page_id=131 und http://torrentula.to.funpic.de/2012/03/22/. Einrichten der STM32F4-Arm-Entwicklungs-Toolchain / und http://jethomson.wordpress.com/2011/11/17/Getting-Started- With-The-StM32F4Discovery-Inlinux/
Allerdings fand ich den letzten Link am nützlichsten. Es wird gezeigt, wie STs STM32-Projekte unverändert erstellt werden. Die einzige Änderung besteht darin, sein Makefile hinzuzufügen, das als perfekte Lösung erscheint.
In neueren Versionen von Ubuntu gibt es ein Paket, das Sie installieren können und das einen ARM-Compiler enthält:
sudo apt-get install gcc-arm-none-eabi
Beachten Sie, dass die Prozessoren alle etwas unterschiedlich sind. STM32F0..4 benötigt alle unterschiedliche Compiler-Flags und das Linker-Skript ist für jedes leicht unterschiedlich (allerdings nur wirklich aufgrund der geänderten RAM- und Flash-Größen).
Bearbeiten: Wenn Sie wirklich schnell loslegen möchten, können Sie auch http://www.espruino.com aufrufen . Es ist ein JavaScript-Interpreter, der auf dem STM32 selbst ausgeführt wird. Wenn Sie also 'stlink' installiert haben, können Sie ein Image von dieser Site herunterladen, es aufspielen und dann eine Verbindung mit einer Terminalanwendung herstellen Starten Sie die Programmierung.
Wenn Sie sich mehr für Texteditoren und Makefiles interessieren, anstatt eine GUI zu verwenden, können Sie Folgendes tun:
Holen Sie sich Ihr Projekt an die Tafel. Entweder verwenden
Code in einem Texteditor und verwenden Sie Befehlszeilentools. Dieses Tutorial bietet viele Tipps.
Genießen
Eclipse , GCC und OpenOCD sind eine Toolchain. Es wird empfohlen , von EMCU-IT und es gibt zusätzliche Informationen hier . Diese Seiten empfehlen auch die Verwendung eines RTOS wie FreeRTOS.org , aber das liegt bei Ihnen.
Und um Hilfe beim Kompilieren der STM32-Beispiele unter Linux zu erhalten , klicken Sie hier . Dieser Link verweist auf ein Makefile für die Beispiele, mit denen aufgerufen werden kann
git clone git://github.com/snowcap-electronics/stm32-examples.git
cd stm32-examples
wget http://www.st.com/internet/com/SOFTWARE_RESOURCES/SW_COMPONENT/FIRMWARE/stm32_f105-07_f2xx_usb-host-device_lib.zip
unzip stm32_f105-07_f2xx_usb-host-device_lib.zip
Ein paar kleinere Code-Fixes sind ebenfalls dokumentiert, aber der Großteil des Projekts sollte funktionieren
make CROSS_COMPILE=/path/to/arm-2011.03/bin/arm-none-eabi-
Ich hatte Erfolg mit https://github.com/JorgeAparicio/bareCortexM (siehe auch die verlinkten Blog-Beiträge). Ich habe das Gefühl, dass ich einfach einen Schritt durch den Code gehen oder den Gerätespeicher durchsuchen kann, anstatt Debugging-Anweisungen in meinen Code einzufügen oder zu erraten, was im Chip vor sich geht.
Das bareCortexM-Projekt ist eine Eclipse-Vorlage für die Entwicklung mit der Cortex M-Serie, insbesondere STM32, in C ++ ohne Betriebssystem. Es ist für die Verwendung von openocd und gcc konfiguriert und verfügt über Skripts zum Flashen und Debuggen auf mehreren Zielen, einschließlich einiger Discovery-Boards. Durch Befolgen der Anweisungen und Installieren der empfohlenen Eclipse-Plugins konnte ich mein STM32VLDISCOVERY unter Ubuntu verwenden.
Wie empfohlen habe ich die Eclipse-Vorlage mit der libstm32pp C ++ - Vorlagenbibliothek desselben Autors für STM32-Hardware kombiniert. libstm32pp bietet einen überraschend vollständigen Ersatz für CMSIS und die oft mit einem Programmiermodell kritisiert STM32 - Treiber , die Sie wie die Dinge sagen läßt PB10::setMode(gpio::cr::GP_OPEN_DRAIN_2MHZ)
und PINB::setLow()
oder PINB::setHigh()
alle meist zusammengestellt Inline aufgrund der C ++ Vorlagen. Das Setup ist sehr schön.
Vielleicht wäre es für jemanden nützlich: meinen kurzen Artikel (auf Russisch) und ein einfaches Projekt . Alles unter Linux und ohne unnötige Dinge wie Eclipse.
Die Bibliotheken stammen von der ST-Website, Makefile - aus einem der vielen GPL-Beispiele im Internet.
Hier ist ein kleines, aber innovatives Vorlagenprojekt für den schnellen Start mit dem STM32F0 Discovery Board unter Linux oder einem anderen Betriebssystem:
https://github.com/dobromyslov/stm32f0-chibios-template
Beachten Sie, dass das Projekt ChibiOS verwendet - ein freies und Open-Source-Echtzeitbetriebssystem, daher ist es nicht gerade eine reine Neuimplementierung.
Betrachten wir platformio . Wenn Sie mit der Befehlszeile vertraut sind, werden Sie feststellen, dass platformio den Entwicklungsprozess erheblich vereinfacht. pio init
kann verwendet werden, um ein Projekt einzurichten. pio run
nutzt die Toolchain zum Kompilieren. pio run --target upload
Sendet den Code an das Gerät. Platformio übernimmt das Herunterladen der Toolchain-Komponenten, Bibliotheken usw. nach Bedarf.