Ich habe ein STM32-Discovery-Board und möchte es unter Linux programmieren können.
Was ist der einfachste Weg, dies zu tun?
Eine einfache Möglichkeit zum Programmieren und Debuggen des STM32 Discovery-Boards (oder eines beliebigen STM32 mit einem ST-Link-Programmierer) ist die Verwendung des 'stlink'-Projekts https://github.com/texane/stlink (obwohl OpenOCD auch beliebt zu sein scheint).
ST Nucleo-Boards werden auch als USB-Flash-Gerät angezeigt, also nicht einmal nötig stlink
– kopieren Sie einfach die Datei auf sie.
Es gibt einige gute Seiten zur Entwicklung 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/ setup-the-stm32f4-arm-development-toolchain/ und http://jethomson.wordpress.com/2011/11/17/getting-started-with-the-stm32f4discovery-in-linux/
Allerdings fand ich den letzten Link am nützlichsten. Es zeigt, wie man die STM32-Projekte von ST so erstellt, wie sie sind - Die einzige Änderung besteht darin, sein Makefile hinzuzufügen, was eine perfekte Lösung zu sein scheint.
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ötigen alle unterschiedliche Compiler-Flags, und das Linker-Skript wird für jeden etwas anders sein (allerdings nur wegen der geänderten RAM- und Flash-Größen).
Bearbeiten: Wenn Sie wirklich schnell loslegen möchten, können Sie auch auf http://www.espruino.com schauen . Es ist ein JavaScript-Interpreter, der auf dem STM32 selbst ausgeführt wird. Wenn Sie also „stlink“ installiert haben, damit Sie auf das Board flashen können, können Sie einfach ein Bild von dieser Site herunterladen, es flashen und dann mit einer Terminalanwendung verbinden und Programmieren beginnen.
Wenn Sie sich mehr für Texteditoren und Makefiles interessieren, anstatt eine GUI zu verwenden, können Sie Folgendes tun:
Bringen Sie Ihr Projekt an die Tafel. Entweder verwenden
Codieren Sie in einem Texteditor und verwenden Sie Befehlszeilentools. Dieses Tutorial wird viele Tipps geben.
Genießen
Eclipse , GCC und OpenOCD sind eine Toolchain. Es wird von EMCU-IT empfohlen und es gibt zusätzliche Informationen hier . Diese Seiten empfehlen auch die Verwendung eines RTOS wie FreeRTOS.org , aber das liegt an Ihnen.
Und Hilfe beim Kompilieren der STM32-Beispiele unter Linux finden 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 Codekorrekturen sind ebenfalls dokumentiert, aber der größte Teil des Projekts sollte damit 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 Blogbeiträge). Ich bin platt, dass ich den Code einfach in Einzelschritten durchgehen 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, gcc konfiguriert und verfügt über Skripte zum Flashen und Debuggen auf mehreren Zielen, einschließlich einiger der Discovery Boards. Indem ich die Anweisungen befolgte und die empfohlenen Eclipse-Plugins installierte, konnte ich mein STM32VLDISCOVERY auf Ubuntu verwenden.
Wie empfohlen habe ich das Eclipse-Template mit der C++-Template-Bibliothek libstm32pp desselben Autors für STM32-Hardware kombiniert. libstm32pp bietet einen überraschend vollständigen Ersatz für CMSIS und die oft kritisierten STM32-Treiber mit einem Programmiermodell, das Sie Dinge sagen lässt wie PB10::setMode(gpio::cr::GP_OPEN_DRAIN_2MHZ)
und PINB::setLow()
oder PINB::setHigh()
alles aufgrund der C++-Vorlagen größtenteils inline kompiliert. Die Einrichtung ist sehr schön.
Vielleicht wäre es für jemanden nützlich: mein kurzer Artikel (auf Russisch) und mein einfaches Projekt . Alles unter Linux und ohne unnötige Dinge wie Eclipse.
Bibliotheken wurden von der ST-Website, Makefile, entnommen – von einem von vielen GPL-Beispielen im Internet.
Hier ist ein kleines, aber innovatives Vorlagenprojekt für den schnellen Einstieg in die Verwendung des STM32F0-Discovery-Boards unter Linux oder einem anderen Betriebssystem:
https://github.com/dobromyslov/stm32f0-chibios-template
Beachten Sie, dass das Projekt ChibiOS verwendet - ein kostenloses und Open-Source-Echtzeitbetriebssystem, also ist es nicht gerade eine Bare-Bone-Implementierung von Grund auf neu.
Ich verwende vim und arm-none-eabi-gcc zusammen mit allen üblichen Linux-Entwicklungstools. Linux ist meiner Meinung nach die bei weitem überlegene Entwicklungsumgebung für Embedded-Arbeiten. Zum Debuggen verwende ich stlink und arm-none-eabi-gdb.
Betrachten Sie 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 kümmert sich bei Bedarf um das Herunterladen der Toolchain-Komponenten, Bibliotheken usw.
Tom Rert
Klatsch
Richard Kammern
Richard Kammern