STM32 F3 Discovery unter Linux

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)

von Kai O.

Ich share mal mein Grundframework für das STM32 F3 Discovery Board (Host ist Linux/Ubuntu) mit euch. Ich benutze Eclipse als IDE ("Eclipse IDE for C/C++ Developers") und die Mentor Embedded Toolchain / Sourcery (http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/) mit selbgestricktem Makefile. Eclipse ist also optional :)

Noch ein Hinweis: Das "Framework" lief zuvor angepasst schon auf dem Discovery F4 und dem VL Discovery Board. Falls Interesse besteht, könnte ich das auch online machen.

Unterstützt wird (in der publizierten Grundversion):

  • LED's toggeln
  • Serielle Ausgabe mit printf() (Man nehme einen FTDI Dongle oder MAX232. Z.B. von Watterott für 12€) und verbinde TX/RX mit PA9 und PA10 auf der Stiftleiste).

Setup:

  • Board über USB (USB ST-Link Buchse) mit dem PC verbinden.
  • FTDI Dongle verbinden (PA9, Pa10, GND) und Terminalprogramm mit 115200 8N1 starten (z.B. Minicom).

Wegen potentiellen Lizenzproblemen fehlen ein paar Files in meinem Archiv. Die Anpassungen sind ganz easy:

  • Archiv auspacken (Link ist am Ende dieses Artikels)
  • Eclipse starten und Projekt in Workspace importieren
  • Discovery F3 Firmware Package von st.com DL und entpacken
  • Pfad auf die Package im Makefile anpassen (Nachfolgend referenziert als "stmfw")
  • STM32_FLASH.LD in stmfw suchen (z.B. von hier stmfw/stm32f3xx/Project/Peripheral_Examples/GPIO_IOToggle/TrueSTUDIO/GPIO_IOToggle) und nach stm32f3demo/stm32_flash.ld kopieren (Kleinschreibung beachten!)
  • startup_stm32f30x.s von stmfw/stm32f3xx/Libraries/CMSIS/Device/ST/STM32F30x/Source/Templates/TrueSTUDIO nach stm32f3demo/ kopieren
  • File editieren und die beiden Zeilen "bl SystemInit" und "bl __libc_init_array" in LoopFillZerobss auskommentieren.
  • stm32f30x.h (aus stmfw/stm32f3xx/Libraries/CMSIS/Device/ST/STM32F30x/Include) nach stm32f3demo/fw/ kopieren
  • File editieren und am Ende vom File #include "stm32_config.h"einfügen
  • system_stm32f30x.c (z.B. aus stmfw/stm32f3xx/Project/Peripheral_Examples/GPIO_IOToggle) nach stm32f3demo/fw/ kopieren
  • Verzeichnis stm32f3demo/obj/fw einmalig anlegen

Danach sollte sich der Kram übersetzen lassen. Maketargets können mit Eclipse angelegt werden. Ich habe bei mir die Targets "all" und "flash". Letzteres ruft den st-flash (https://github.com/texane/stlink) auf um über ein USB Kabel den Discovery zu flashen. Setup des Tools ist in dem Discovery F4 Artikel beschrieben (http://www.mikrocontroller.net/articles/STM32F4-Discovery).

Das Archiv zu diesem Artikel liegt hier ab http://www.mikrocontroller.net/topic/291286#3100840

Meldet euch einfach, wenns (noch) nicht funktioniert.