ARM Embedded Tutorial - Entry FPC and STM32/de
Einstieg STM32 und FPC
Treiber für ST-LINK V2
Linux
Das Paket als Zip runterladen
Anleitung befolgen
Folgende Pakete müssen installiert werden
- CMake (minimal v2.8.7)
- C compiler (gcc, clang, mingw)
- Libusb 1.0 (minimal v1.0.9)
sudo apt-get install cmake
sudo apt-get apt-get install gcc
sudo apt-get install libusb-1.0-0.dev
// sudo apt-get install libusb-dev // ???
stlink compiliern und installieren:
$ make release
$ make debug
$ mkdir build
$ cd build
$ cmake -DCMAKE_BUILD_TYPE=Debug ..
$ make
Im Home Verzeichniss:
$ cd build/Release
$ make install DESTDIR=$HOME
Im System global:
$ cd build/Release
$ sudo make install
Reboot oder:
$ udevadm control --reload-rules
$ udevadm trigger
Anschliessend muss eine Gerätedatei /dev/stlinkv2_3 oder ähnlich vorhanden sein.
Windows/ MacOS
- https://github.com/texane/stlink/releases/tag/1.3.0 ( nicht getestet )
Hardware verbinden
ST-LINK V2 folgendmassen mit dem STM32F103C verbinden:
- STLIKN STM32
- SWDIO --> SWO
- GND --> GND
- SWCLK --> SWCLK
- 3.3V --> 3.3V
Arduino-IDE einrichten
Dies ist nicht zwingend notwendig, hat aber den Vorteil, das man nachgucken kann, wie dort Probleme gelöst worden sind. ZB. einen I²C-Zugriff.
Folgende Seite beachten ( Funktioniert nicht mit Sloeber )
JSON-Link:
Folgende JSON geht auch mit Sloeber.
Dieser JSON-Link in der Arduino-IDE unter Datei/Voreinstellungen einfügen:
Version 2018.4.2 wurde getestet. Am besten auch die Ausfühliche Ausgabe für Kompilierung und Hochladen aktivieren. Dann sieht man, wen es einen Fehler beim Hochladen gibt. Achtung: Es wird im grünen Balken Hochladen abgeschlossen. angezeigt, auch wen im detailierten Bericht ein Fehler auftrat.
In der Boardverwaltung folgendes installieren:
- STM32 Nucleo
Unter Werkzeuge das Board konfigurieren:
- Board -> Generic ST32F103 series
- Serial Interface -> No Serial
- Upload method -> STLINK
- Port -> ein bellieber Port, Arduino verlangt einen.
Erster Start
Den Arduino-Blink Sketch hochladen, dann sollte die LED PC13 blinken.
IDE für FPC einrichten
MSEide und MSEgui
Folgende Tools sind notwendig:
- https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads - GNU Arm Embedded Toolchain ( gcc für ARM )
- https://sourceforge.net/projects/mseide-msegui/files/fpccrossarmembedded/ - Cross-Compiler für ARM Embedded.
- https://sourceforge.net/projects/mseide-msegui/files/mseide-msegui/4.6/ - mseGUI ( Bin und Sourcen runterlanden )
- https://gitlab.com/mseide-msegui/mseuniverse/tree/master/samples/embedded/arm/stm32l100c - Demo-Project
Diese Archive in einen Ordner entpacken, zB. /home/tux/STM32-FPC
mseIDE unter /home/tux/STM32-FPC/msegui/bin starten.
- Project/open - Das Demo-Project im entpackten Ordner öffnen. ( /home/tux/STM32-FPC/samples/embedded/arm/stm32l100c/stm32l100c.prj )
- Project/Options/Macros folgende Pfade anpassen:
- TOOLCHAINDIR - /home/tux/STM32-FPC/gcc-arm-none-eabi-7-2017-q4-major
- CROSSFPCDIR - /home/tux/STM32-FPC/crossfpc-x86_64_linux_eabi_embedded_3_1_1
Wen in der Linken Spalte noch ein roter Break-Point gesetzt ist, dieser mit einem Klick deaktivieren. Mit F9 das Programm starten. Wen alles richtig gelaufen ist, müsste dies ohne Fehler durchlaufen.
Wen es mit folgendem Fehler abricht:
st-util: error while loading shared libraries: libstlink.so.1: cannot open shared object file: No such file or directory
Ist vermutlich dies das Problem:
Dann müssen die libstlink.* Dateien von /usr/local/lib/lib/ nach /usr/local/lib/ verschoben werden, dazu ist allerdings Root-recht nötig. Anschliessend folgendes aufrufen:
sudo ldconfig
Wen man den Code im Editor durch folgenden ersetzt, sollte die LED an PC13 blinken.
program stm32Blink;
procedure Delay;
var
i: uint32;
begin
for i := 0 to 300000 do asm nop end;
end;
begin
// Ports einschalten
RCC.APB2ENR := RCC.APB2ENR or (%111 shl 2);
// Kommpletter PortC aud Output.
PortC.CRL := $33333333;
PortC.CRH := $33333333;
while true do begin
// Pin beschreiben
PortC.ODR := $0000FFFF;
Delay;
// Pin beschreiben
PortC.ODR := $00000000;
Delay;
end;
end.
Lazarus
Läuft leider noch nicht.
Manuell mit Make
Nicht getestet.
make clean all OS_TARGET=embedded CPU_TARGET=arm SUBARCH=armv7m
Siehe auch
- Übersichtseite ARM Embedded Tutorial/de
Autor: Mathias