Difference between revisions of "ARM Embedded Tutorial - Entry FPC and STM32/de"

From Lazarus wiki
Jump to navigationJump to search
Line 132: Line 132:
 
Wenn alles fehlerfrei gelaufen ist, FPCUPdeluxe beenden.
 
Wenn alles fehlerfrei gelaufen ist, FPCUPdeluxe beenden.
  
=== 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 downloaden )
 
* 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.
 
 
* ''Settings --> Configure MSEide'' - folgende Pfad anpassen:
 
** ''$ {MSEDIR} - '''/home/tux/STM32-FPC/msegui/'''
 
* ''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 {{keypress|F9}} das Programm starten. Wen alles richtig gelaufen ist, müsste dies ohne Fehler durchlaufen.
 
 
Wen man den Code im Editor durch folgenden ersetzt, sollte die LED an PC13 blinken.
 
 
===Beispiel Code===
 
===Beispiel Code===
 
<syntaxhighlight>
 
<syntaxhighlight>
Line 191: Line 171:
 
make clean all OS_TARGET=embedded CPU_TARGET=arm SUBARCH=armv7m
 
make clean all OS_TARGET=embedded CPU_TARGET=arm SUBARCH=armv7m
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 +
=== 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 downloaden )
 +
* 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.
 +
 +
* ''Settings --> Configure MSEide'' - folgende Pfad anpassen:
 +
** ''$ {MSEDIR} - '''/home/tux/STM32-FPC/msegui/'''
 +
* ''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 {{keypress|F9}} das Programm starten. Wen alles richtig gelaufen ist, müsste dies ohne Fehler durchlaufen.
 +
 +
Wen man den Code im Editor durch folgenden ersetzt, sollte die LED an PC13 blinken.
  
 
== Siehe auch ==
 
== Siehe auch ==

Revision as of 17:24, 3 October 2018

Template:Translate

Einstieg STM32 und FPC

Dieses Tutorial wurde anhand von Linux Mint 64Bit getestet.

Treiber für ST-LINK V2

Linux

Das Paket als Zip mit clone or download downloaden:

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 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 # evt. schon vorhanden.
$ 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:

$ sudo udevadm control --reload-rules
$ sudo udevadm trigger

Anschliessend muss eine Gerätedatei /dev/stlinkv2_3 oder ähnlich vorhanden sein.

Als Test mal folgendes aufrufen:

st-util

Dann sollten mehrer Info-Zeilen kommen, unter anderem steht dort wie viel SRAM der Controller hat. Abbrechen kann man es anschliessend mit Ctrl+C.

Wen st-util mit folgendem Fehler abbricht:

  • 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:
    • https://github.com/texane/stlink/issues/700
      Dann müssen die libstlink.* Dateien von /usr/local/lib/lib/ nach /usr/local/lib/ verschoben werden, dazu ist allerdings Root-recht nötig. ( Bei der neusten Version von stlink ist das Verschieben nicht mehr nötig. )
      Anschliessend folgendes aufrufen:
      sudo ldconfig
      

Windows/ MacOS

Hardware verbinden

ST-LINK V2 folgendmassen mit dem STM32F103C verbinden:

ST LINK V2 --> STM32F103C
SWDIO --> SWO
GND --> GND
SWCLK --> SWCLK
3.3V --> 3.3V

Arduino-IDE einrichten (optimal)

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 ( Eclipse für Arduino ) )

JSON-Link:

Folgende JSON geht auch mit Sloeber.
Dieser JSON-Link in der Arduino-IDE unter Datei/Voreinstellungen einfügen:

Am besten auch die ausführliche 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:

  • stm32duino/STM32F1xx...

Unter Werkzeuge das Board konfigurieren:

  • Board - Generic ST32F103 series
  • Serial Interface - No Serial
  • Upload method - STLINK

Erster Start

Den Arduino-Blink Sketch hochladen, dann sollte die LED PC13 blinken. Evtl. Ports auf PC13 setzen.

IDE für FPC einrichten

Lazarus

Trunk bauen:

  • ListBoxen links-oben FPC version und Lazarus version auf embedded stellen.
  • Mit Embedded die Lazarus Basis-Trunk-Version bauen.( Button befindet sich unten, mit dem IC-Symbol. )

Wenn alles ohne Fehler durchläuft bekommt man die aktuelle Trunk von FPC/Lazarus, normale Desktopanwendungen kann man mit dieser schon erstellen. Und es sollte auf dem Dekstop ein ein Icon Lazarus_fpcupdeluxe entstanden sein.

Light bulb  Hinweis: Es könnte sein, dass die SVNs Schwierigkeiten machen. Dann nicht verzagen und es zu einem späterem Zeitpunkt nochmals probieren. ;-)
Was auch schon geholfen hat, FPCUPdeluxe zweimal hintereinander ausführen
Einen nicht aktuellen FPCUPdeluxe kann auch Schwierigkeiten machen.
Wen etwas nicht klappt, kann man hier im englischenm Forum nachfragen, der Autor ist sehr hilfsbereit.

AVR-Crosscompiler bauen:

  • Button Setup+ drücken, um einen Dialog mit weiteren Optionen zu öffnen. Dort folgendes einstellen:
    • CPU: arm
    • OS: embedded
    • Cross SubArch Overide: armv7m
  • Dialog mit Ok beenden.
  • Im Hauptfenster noch folgende CheckBoxen anwählen:
    • CPU: arm
    • OS: embedded
  • Button Install cross-compiler drücken, somit wird der Cross-Compiler gebaut.

Wenn alles fehlerfrei gelaufen ist, FPCUPdeluxe beenden.

Beispiel Code

program stm32Blink;

procedure Delay;
var
  i: uint32;
begin
  for i := 0 to 500000 do begin
    asm nop end; // Leerbefehl
  end;
end;

begin
  // PortC einschalten
  RCC.APB2ENR := RCC.APB2ENR or (%1 shl 4);

  // Pin P13 von PortC aud Output.
  PortC.CRH := $00300000;

  // Hinweis: Die LED leuchtet bei LOW.
  while true do begin

    // Pin13 -- High
    PortC.BSRR := 1 shl 13;
    Delay;

    // Pin13 -- Low
    PortC.BRR := 1 shl 13;
    Delay;
  end;
end.

Manuell mit Make

Nicht getestet.

make clean all OS_TARGET=embedded CPU_TARGET=arm SUBARCH=armv7m

MSEide und MSEgui

Folgende Tools sind notwendig:

Diese Archive in einen Ordner entpacken, zB. /home/tux/STM32-FPC

MSEide unter /home/tux/STM32-FPC/msegui/bin starten.

  • Settings --> Configure MSEide - folgende Pfad anpassen:
    • $ {MSEDIR} - /home/tux/STM32-FPC/msegui/
  • 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 man den Code im Editor durch folgenden ersetzt, sollte die LED an PC13 blinken.

Siehe auch

Autor: Mathias