ARM Embedded

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.

Re: ARM Embedded

Beitragvon mse » 6. Apr 2018, 20:03 Re: ARM Embedded

Ein Beispiel zum debuggen mit ST-Link ist hier:
https://gitlab.com/mseide-msegui/mseuni ... inkerdebug
http://mseide-msegui.sourceforge.net/pics/armdebug.png
Code: Alles auswählen
 
Debug demo project for STM32L100C-Discovery board    2018-04-06 mse
-------------------------------------------------
 
- clone, build and install the texane ST-Link tools:
https://github.com/texane/stlink
see
https://github.com/texane/stlink/blob/m ... mpiling.md
 
- Download the ARM toolchain:
https://developer.arm.com/open-source/g ... /downloads
 extract it to a directory of your choice (<toolchaindir>).
 
- Download the ST firmware STM32CubeL1:
http://www.st.com/content/st_com/en/pro ... are-scroll
 extract it to a directory of your choice (<firmwaredir>).
 
- Run MSEide.
- 'Project'-'Open'-"blinkerdebug.prj".
- 'Project'-'Options'-'Macros', update <toolchaindir> and <firmwaredir>.
- 'Target'-'Download' in order to flash the program.
- 'Target'-'Continue' in order to run the program.
 
Have a lot of fun!
 
Martin
 
mse
 
Beiträge: 2013
Registriert: 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0) | 
CPU-Target: x86,x64,ARM
Nach oben

Beitragvon mse » 7. Apr 2018, 10:56 Re: ARM Embedded

Hier ein Beispiel Free Pascal ARM-embedded:
https://gitlab.com/mseide-msegui/mseuni ... stm32l100c
http://mseide-msegui.sourceforge.net/pi ... bedded.png
Code: Alles auswählen
 
Free Pascal demo project for STM32L100C-Discovery board    2018-04-07 mse
-------------------------------------------------------
 
- clone, build and install the texane ST-Link tools:
https://github.com/texane/stlink
see
https://github.com/texane/stlink/blob/m ... mpiling.md
 
- Download the ARM toolchain:
https://developer.arm.com/open-source/g ... /downloads
 extract it to a directory of your choice (<toolchaindir>).
 
- Download the Free Pascal ARM-embedded cross compiler:
https://sourceforge.net/projects/mseide ... membedded/
 extract it to a directory of your choice (<crossfpcdir>).
 
- Run MSEide.
- 'Project'-'Open'-"stm32l100c.prj".
- 'Project'-'Options'-'Macros', update <toolchaindir> and <crossfpcdir>.
- 'Target'-'Continue' in order to run the program.
 
Have a lot of fun!
 
Martin
 
mse
 
Beiträge: 2013
Registriert: 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0) | 
CPU-Target: x86,x64,ARM
Nach oben

Beitragvon Mathias » 7. Apr 2018, 20:26 Re: ARM Embedded

Ich habe heiute ein wenig mit den GPIO-Registern rum gespielt.
Dafür habe ich an die Pins A0-A7 LEDs angeschlossen.

Code: Alles auswählen
#include <stddef.h>
#include <stdlib.h>
 
#define LEDPin 13
 
void setup() {
   GPIOA->regs->CRH = 0x33333333;
   GPIOA->regs->CRL = 0x33333333;
 
   GPIOC->regs->CRH = 0x33333333;
   GPIOC->regs->CRL = 0x33333333;
}
 
void loop() {
//   GPIOA->regs->BRR = 0B01010101;
//   GPIOA->regs->BSRR = 0B10101010;
   GPIOA->regs->ODR = 0B10101010;
   GPIOC->regs->BSRR = 1 << LEDPin;
//   (*(__uint32_t *) (0x40011000 + 16)) = 0b10000000000000;
 
   delay(500);
//   GPIOA->regs->BRR = 0B10101010;
//   GPIOA->regs->BSRR = 0B01010101;
   GPIOA->regs->ODR = 0B01010101;
   GPIOC->regs->BSRR = 1 << LEDPin << 16;
//    (*(__uint32_t *) (0x40011000 + 16)) = 0b100000000000000000000000000000;
 
   delay(500);
}

Da sieht man, das der STM32 einiges moderner als der AVR ist. Es gibt sehr viele Möglichkeiten um die GPIOs zu beschreiben. Man kann sich die or und and not. Verknüpfungen sparen, aber möglich wäre es immer noch.

Jetzt muss ich mal bei Gelegenheit gucken, ob ich den Cross-Compiler mit deinem Links hinkriege.
Am liebsten hätte ich es, wen es mit Lazarus laufen würde.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4347
Registriert: 2. Jan 2014, 18:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon mse » 8. Apr 2018, 07:57 Re: ARM Embedded

Dann verwende zuerst meine MSEide Beispiele. Wenn es in MSEide funktioniert kannst du nach Lazarus portieren.
Wobei MSEide auch für Mikrocontroller als Entwicklungsziele entworfen wurde und für Embedded Entwicklungen speziell geeignet ist.
mse
 
Beiträge: 2013
Registriert: 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0) | 
CPU-Target: x86,x64,ARM
Nach oben

Beitragvon mse » 8. Apr 2018, 09:55 Re: ARM Embedded

Mathias hat geschrieben:Jetzt muss ich mal bei Gelegenheit gucken, ob ich den Cross-Compiler mit deinem Links hinkriege.

Falls st-util mit der Fehlermeldung
Code: Alles auswählen
 
st-util: error while loading shared libraries: libstlink.so.1: cannot open shared object file: No such file or directory
 

abbricht ist vermutlich
https://github.com/texane/stlink/issues/700
das Problem. Kopiere die libstlink.* Dateien von
/usr/local/lib/lib/
nach
/usr/local/lib/
und rufe
Code: Alles auswählen
 
sudo ldconfig
 

auf.
mse
 
Beiträge: 2013
Registriert: 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0) | 
CPU-Target: x86,x64,ARM
Nach oben

Beitragvon Mathias » 8. Apr 2018, 13:58 Re: ARM Embedded

Der Fpc-Crodd-Pfad habe ich jetzt mal richtig.

Aber jetzt habe ich folgenden Fehler:
Code: Alles auswählen
Free Pascal Compiler version 3.1.1 [2018/04/07] for arm
Copyright (c) 1993-2018 by Florian Klaempfl and others
Target OS: Embedded
Compiling stm32l100c.pas
stm32l100c.pas(6,13) Warning: Variable "testvar" does not seem to be initialized
Assembling stm32l100c
stm32l100c.pas(9) Error: Assembler arm-embedded-as not found, switching to external assembling
stm32l100c.pas(9) Fatal: There were 1 errors compiling module, stopping
Fatal: Compilation aborted


Da er die as-Datei nicht gefunden hat, habe ich sie umbenannt, hat aber nichts genutzt.
/home/acer/Schreibtisch/arm/gcc-arm-none-eabi-7-2017-q4-major/bin/arm-none-eabi-as --> /home/acer/Schreibtisch/arm/gcc-arm-none-eabi-7-2017-q4-major/bin/arm-embedded-as

Bei Macro steht folgendes:
Code: Alles auswählen
TOOLCHAINDIR   /home/acer/Schreibtisch/arm/gcc-arm-none-eabi-7-2017-q4-major/bin
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4347
Registriert: 2. Jan 2014, 18:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon mse » 8. Apr 2018, 15:27 Re: ARM Embedded

Code: Alles auswählen
 
TOOLCHAINDIR   /home/acer/Schreibtisch/arm/gcc-arm-none-eabi-7-2017-q4-major
 

Bitte mache die as-Umbenennung wieder rückgängig.
mse
 
Beiträge: 2013
Registriert: 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0) | 
CPU-Target: x86,x64,ARM
Nach oben

Beitragvon Mathias » 8. Apr 2018, 16:44 Re: ARM Embedded

Ich habe die Ordner ein wenig aufgeräumter gemacht.
Diese Datei habe ich jetzt.
Code: Alles auswählen
/home/tux/Schreibtisch/MSEgui_arm/gcc_arm/bin/arm-none-eabi-as

Bei Macros folgendes, wie du schreibst ohne bin.
Code: Alles auswählen
TOOLCHAINDIR   /home/tux/Schreibtisch/MSEgui_arm/gcc_arm

Habe ich noch was vergessen ?

Wieso kommt beim Fehler "arm-embedded-as", obwohl er nach deiner Meinung "arm-none-eabi-as" braucht ?
Das sieht so aus:
Bild
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4347
Registriert: 2. Jan 2014, 18:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon Mathias » 8. Apr 2018, 17:05 Re: ARM Embedded

Ich habe im Ordner
Code: Alles auswählen
/home/tux/Schreibtisch/MSEgui_arm/gcc_arm/arm-none-eabi/bin
bei gewissen Dateien umbenannt, auf arm-embedded-xx.
Jetzt läuft der Compiler durch.
Hochladen tut er noch nichts, auch versucht er es nicht, ansonsten würde die LED am ST-LINK V2 kurz aufflackern.
Dafür habe ich ein Fehlermeldung oberhalb des grünen Start-Pfeiles.
Code: Alles auswählen
gdb server start error 127.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4347
Registriert: 2. Jan 2014, 18:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon mse » 8. Apr 2018, 17:35 Re: ARM Embedded

'Project'-'Options'-'Make'-'Show Commandline' zeigt bei mir:
Code: Alles auswählen
 
/home/mse/test/crossfpc-x86_64_linux_eabi_embedded_3_1_1//lib/fpc/3.1.1/ppcrossarm -Fu/home/mse/test/crossfpc-x86_64_linux_eabi_embedded_3_1_1/lib/fpc/3.1.1/units/arm-embedded/* -Fi/home/mse/test/crossfpc-x86_64_linux_eabi_embedded_3_1_1/lib/fpc/3.1.1/units/arm-embedded/* -Fl/home/mse/test/crossfpc-x86_64_linux_eabi_embedded_3_1_1/lib/fpc/3.1.1/units/arm-embedded/* -Fo/home/mse/test/crossfpc-x86_64_linux_eabi_embedded_3_1_1/lib/fpc/3.1.1/units/arm-embedded/* -g -Tembedded -Cparmv7m -WpSTM32F103X4 -e/home/mse/download/arm/gcc-arm-none-eabi-7-2017-q4-major/arm-none-eabi/bin stm32l100c.pas
 

Vor allem interessant
Code: Alles auswählen
 
-e/home/mse/download/arm/gcc-arm-none-eabi-7-2017-q4-major/arm-none-eabi/bin
 

Wenn du in deinem entsprechenden Verzeichnis schaust, siehst du, dass dort die Tools ohne Prefix "arm-none-eabi" gelistet sind. Mit der original "gcc-arm-none-eabi-7-2017-q4-major" cross-toolchain und dem korrekten TOOLCHAINDIR Macro sind keine Umbenennungen notwendig.

Code: Alles auswählen
 
gdb server start error 127.
 


Das ist vermutlich das bereits erwähnte Problem
https://github.com/texane/stlink/issues/700
Bitte gib in einem Teminal
Code: Alles auswählen
 
st-util
 

ein. Falls eine Fehlermeldung
Code: Alles auswählen
 
st-util: error while loading shared libraries: libstlink.so.1: cannot open shared object file: No such file or directory
 

erscheint, kopiere die libstlink.* Dateien von
/usr/local/lib/lib/
nach
/usr/local/lib/
und rufe
Code: Alles auswählen
 
sudo ldconfig
 

auf.
mse
 
Beiträge: 2013
Registriert: 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0) | 
CPU-Target: x86,x64,ARM
Nach oben

Beitragvon Mathias » 8. Apr 2018, 18:32 Re: ARM Embedded

So jetzt lädt er hoch.

'Project'-'Options'-'Make'-'Show Commandline' zeigt bei mir:
Dies sieht bei mir etwa gleich aus.

Wenn du in deinem entsprechenden Verzeichnis schaust, siehst du, dass dort die Tools ohne Prefix "arm-none-eabi" gelistet sind. Mit der original "gcc-arm-none-eabi-7-2017-q4-major" cross-toolchain und dem korrekten TOOLCHAINDIR Macro sind keine Umbenennungen notwendig.
Ohne umbenennen geht es bei mir immer noch nicht.

Das ist vermutlich das bereits erwähnte Problem
Das war es.

Ich wollte mal probieren, ob ich es auf die gleiche weise fertig kriege, die LEDPC13 einzuschalten, so wie ich es mit Arduino gemacht habe.
Aber die LED bleibt dunkel. :roll:
Code: Alles auswählen
program stm32l100c;
var
  PortC : record
    CRL, CRH, IDR, ODR, BSRR, BRR, LCKR: uint32;
  end absolute $40011000;
 
begin
  PortC.CRL := $33333333;
  PortC.CRH := $33333333;
 
 while true do begin
  PortC.BSRR := $0000FFFF;
 end;
end.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4347
Registriert: 2. Jan 2014, 18:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon mse » 8. Apr 2018, 18:49 Re: ARM Embedded

Mathias hat geschrieben:Ohne umbenennen geht es bei mir immer noch nicht.

Es sollte. Oder hast du irgend etwas spezielles in .fpc.cfg? Bitte ändere
Code: Alles auswählen
 
-g ${FPCPARAMS}
 

in 'Project'-'Options'-'Make'-'Make Options' zu
Code: Alles auswählen
 
-n -g ${FPCPARAMS}
 

damit keine Konfigurations-Datei geladen wird.
Das ist vermutlich das bereits erwähnte Problem
Das war es.

Gratuliere! :-)
Ich wollte mal probieren, ob ich es auf die gleiche weise fertig kriege, die LEDPC13 einzuschalten, so wie ich es mit Arduino gemacht habe.
Aber die LED bleibt dunkel. :roll:
Code: Alles auswählen
program stm32l100c;
var
  PortC : record
    CRL, CRH, IDR, ODR, BSRR, BRR, LCKR: uint32;
  end absolute $40011000;
 
begin
  PortC.CRL := $33333333;
  PortC.CRH := $33333333;
 
 while true do begin
  PortC.BSRR := $0000FFFF;
 end;
end.

Passt die Prozessor Einstellung in 'Project'-'Options'-'Macros' FPCPARAMS (-Wpxxxxxxx)? Breakpoints und Watches funktionieren?
Das Arduino Projekt macht möglicherweise weitere notwendige Initialisierungen.
mse
 
Beiträge: 2013
Registriert: 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0) | 
CPU-Target: x86,x64,ARM
Nach oben

Beitragvon Mathias » 8. Apr 2018, 20:11 Re: ARM Embedded

damit keine Konfigurations-Datei geladen wird.
Jetzt geht es ohne Umbenennung.
An der fpc.cfg habe ich nichts geändert.

Passt die Prozessor Enstellung in 'Project'-'Options'-'Macros' FPCPARAMS (-Wpxxxxxxx)? Breakpoints und Watches funktionieren?

Ich besitze einen STM32F103C.
Ist diese Zeile falsch dafür ?
Code: Alles auswählen
FPCPARAMS   -Tembedded -Cparmv7m -WpSTM32F103X4 -e${TOOLCHAINDIR}/arm-none-eabi/bin

Im Ordner Units hat es mehrere stm32f10x.

Das Arduino Projekt macht möglicherweise weitere notwendige Initialisierungen.
Dies wäre möglich.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4347
Registriert: 2. Jan 2014, 18:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon mse » 8. Apr 2018, 20:18 Re: ARM Embedded

Mathias hat geschrieben:Ich besitze einen STM32F103C.
Ist diese Zeile falsch dafür ?
Code: Alles auswählen
FPCPARAMS   -Tembedded -Cparmv7m -WpSTM32F103X4 -e${TOOLCHAINDIR}/arm-none-eabi/bin

Im Ordner Units hat es mehrere stm32f10x.

Das weiss ich nicht. Vielleicht kann Florian Auskunft geben.
Funktionieren Breakpoints und Watches?
mse
 
Beiträge: 2013
Registriert: 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0) | 
CPU-Target: x86,x64,ARM
Nach oben

Beitragvon Mathias » 8. Apr 2018, 20:49 Re: ARM Embedded

Funktionieren Breakpoints und Watches?

So wie es scheint ja.
Was mich dort merkwürdig dunkt, dort hat es ganz andere Adressen.
Im Editor habe ich $40..... und dort wird 0x80..... angezeigt.

So nebenbei, hast du mal ein Blinker hingekriegt ?

Bild

PS: Es wäre mal schön, wen der Admin das Forum mal richten würde, so das die Anhänge wider funktionieren. :roll:
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4347
Registriert: 2. Jan 2014, 18:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

» Weitere Beiträge siehe nächste Seite »
VorherigeNächste

Zurück zu Sonstiges



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

porpoises-institution
accuracy-worried