WIN32 und ARM

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Pelikan
Beiträge: 4
Registriert: Mo 11. Nov 2013, 09:40

WIN32 und ARM

Beitrag von Pelikan »

moin moin,

wie kann ich unter WIN32 einen ARM ( z.B. STM32F103 o.ä. ) programmieren?
Also kein Betriebssystem, alles selber.

Danke.
Mit Gruß
Der Pelikan

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: WIN32 und ARM

Beitrag von mschnell »

Was meinst Du mit "Programmieren" ?

Üblicherweise braucht man für "embedded" Prozessoren / Projekte:
- Ein (Prototypen-) Board mit dem Prozessor. Das hat meist eine JTAG-Schnittstelle für die "Programmierung"
- Einen USB <-> JTAG Adapter
- Software

Die Software besteht aus
- Cross-Compiler. Üblicherweise GNU, fpc sollte auch gehen, ist aber u.U. schwierig in die Entwicklungs-Umgebung zu integrieren
- Debugger, der sich mit dem Einen USB <-> JTAG Adapter versteht
- IDE (z.B. Eclipse). Ich habe mal ansatzweise versucht Lazarus für "remote debugging" zu konfigurieren. Das ist alles andere als einfach.

-Michael

mse
Beiträge: 2013
Registriert: Do 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

Re: WIN32 und ARM

Beitrag von mse »

mschnell hat geschrieben:Das ist alles andere als einfach.
Mit MSEide geht es recht gut, da ich MSEide häufig für remote-debugging und cross-compiling für embedded benutze - auch für gcc-Projekte.

Socke
Lazarusforum e. V.
Beiträge: 3177
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: WIN32 und ARM

Beitrag von Socke »

mschnell hat geschrieben:Die Software besteht aus
- Cross-Compiler. Üblicherweise GNU, fpc sollte auch gehen, ist aber u.U. schwierig in die Entwicklungs-Umgebung zu integrieren
Der FPC ist wunderbar in die IDE Lazarus integriert ;-)
Du musst vorher den Cross-Compiler selbst bauen; Grundsätzlich funktioniert das für ARM genau so wie für die AVR-Prozessoren beschrieben unter http://wiki.freepascal.org/AVR; ersetze hier imm AVR mit ARM.

Du brauchst Binutils für ARM z.B. von http://svn.freepascal.org/cgi-bin/viewv ... t=fpcbuild; je nachdem welche Binutils du verwendest, müssen die Parameter unten angepasst werden.

Je nach verwendetem Microcontroller musst du die Subarchitektur setzen. Ich habe hier z.B. einen Cortex-M0 LPC1114; daher ist die Subarchitektur armv6m (vgl. https://en.wikipedia.org/wiki/List_of_A ... hitectures Spalte "ARM Architecture"). Eine Erläuterung der Optionen findest du in der BuildFAQ
Bei mir ist die Befehlzeile:

Code: Alles auswählen

make buildbase installbase CPU_TARGET=arm OS_TARGET=embedded SUBARCH=armv6m CROSSINSTALL=1 CROSSBINDIR=C:\\FPC\\arm-none-eabi INSTALL_PREFIX=C:\\FPC\\3.1.1 NOGDB=1 BINUTILSPREFIX=arm-none-eabi- PP=C:\FPC\3.0.0\bin\i386-win32\fpc.exe
Der STM32F103 enthält einen Cortex-M3-Kern und hat daher die Subarchitektur arm7m.

Bitte beachte: aktuell werden keine Bibliotheken mitgeliefert; du musst also direkt die jeweiligen Prozessor-Register ansprechen. Zum Glück musst du die Registerdefinitionen nicht mehr selbst schreiben; der FPC bringt diese für folgenden STM32F103-Modelle bereits mit: STM32F103X4, STM32F103X6, STM32F103X8, STM32F103XB, STM32F103XC, STM32F103XD, STM32F103XE, STM32F103XF, STM32F103XG.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

deadc0de
Beiträge: 56
Registriert: So 24. Jan 2016, 18:31
OS, Lazarus, FPC: Windows(10,8.1,7), Archlinux, Debian
CPU-Target: 64Bit + 32Bit
Wohnort: Winnenden
Kontaktdaten:

Re: WIN32 und ARM

Beitrag von deadc0de »

Bei der Hardware würde ich zu einem Arduino greifen. Günstig, und du kannst in als Programmer einsetzen.
Ein Betriebssystem läuft einem Micro Controller nie und es ist meist nicht schwer, Programme dafür zu schreiben, da du die Hardware direkt ansprechen kannst und das OS nicht als Vermittlungsschicht vorhanden ist. Das heißt, du musst nicht auf OS Spezifische dinge achten musst dafür aber die DOKU der Hardware lesen.

https://www.amazon.de/Vorstands-Develop ... ds=arduino
Das ist kein orginal, aber mindestens genauso gut, da Arduino OpenSource ist, wurden die Orginal Baupläne verwendet.
https://www.amazon.de/SunFounder-Sideki ... +lcd&psc=1
Das könnte nützlich sein, wenn du was mit dem Arduino anfangen willst, außer eine LED am Board selbst zum Blinken zu bringen.

LG
Rene Steiner
Wissen ist Macht und ich weis, das ich nichts weis

Pelikan
Beiträge: 4
Registriert: Mo 11. Nov 2013, 09:40

Re: WIN32 und ARM

Beitrag von Pelikan »

moin moin,

melde mich vom Urlaub zurück...

Mit dem Bau des Cross-Compilers tu ich mich schwer.
MSEide werde ich mir mal ansehen.

Um die Anwendung zu verdeutlichen:
Eine Steuerung für meine CNC-Fräse (G-Code-Interpreter) von ASM (ca. 20KB 8051-Code) auf Pascal ( STM32F746 ) umzustellen.
Die Win-Version mit Delphi läuft perfekt, mit FPC-Win32 hakelt das zeichnen auf Canvas. Sieht nicht schön aus.

Arduino und so will ich nicht.

Danke für Eure Tips.

Der Pelikan

deadc0de
Beiträge: 56
Registriert: So 24. Jan 2016, 18:31
OS, Lazarus, FPC: Windows(10,8.1,7), Archlinux, Debian
CPU-Target: 64Bit + 32Bit
Wohnort: Winnenden
Kontaktdaten:

Re: WIN32 und ARM

Beitrag von deadc0de »

Pelikan hat geschrieben:moin moin,

melde mich vom Urlaub zurück...

Mit dem Bau des Cross-Compilers tu ich mich schwer.
MSEide werde ich mir mal ansehen.

Um die Anwendung zu verdeutlichen:
Eine Steuerung für meine CNC-Fräse (G-Code-Interpreter) von ASM (ca. 20KB 8051-Code) auf Pascal ( STM32F746 ) umzustellen.
Die Win-Version mit Delphi läuft perfekt, mit FPC-Win32 hakelt das zeichnen auf Canvas. Sieht nicht schön aus.

Arduino und so will ich nicht.

Danke für Eure Tips.

Der Pelikan
Warum kein Arduino?
Wissen ist Macht und ich weis, das ich nichts weis

Pelikan
Beiträge: 4
Registriert: Mo 11. Nov 2013, 09:40

Re: WIN32 und ARM

Beitrag von Pelikan »

moin moin,

STM32F746 ganz kurz:
216MHz Takt
FPU
1MB Flash
320KB RAM

Kann da ein Arduino mitbieten?

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: WIN32 und ARM

Beitrag von mschnell »

Die ARM Cortex CPU ist natürlich sehr "Standard".

Eine (Arduino) ATMega CPU würde ich heute nicht mehr in Betracht ziehen, da Microchip ATMEL gekauft hat und meiner Ansicht nach die Zukunft der Atmel CPUs als direkte Konkurrenz zu PIC fraglich ist.

Hast Du Dir schon mal den PIC32 MZ angesehen -> https://www.microchip.com/design-centers/32-bit ?

Das ist eine MIPS-Architektur. FPC für MIPS ("embedded", was bei fpc "ohne Betriebssystem" heißt) ist - soweit ich das weiß inzwischen gut brauchbar.

Vorteil für schnelle Reaktionen: mehrere Registersätze, die beim Interrupt automatisch umgeschaltet werden. D.h fast kein Overhead für die ISR.


-Michael

Socke
Lazarusforum e. V.
Beiträge: 3177
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: WIN32 und ARM

Beitrag von Socke »

mschnell hat geschrieben:Das ist eine MIPS-Architektur. FPC für MIPS ("embedded", was bei fpc "ohne Betriebssystem" heißt) ist - soweit ich das weiß inzwischen gut brauchbar.
Das Embedded-Target gibt es für viele Architekturen (MIPS, ARM, AVR, i386, x64_86, i8086).
Nach meinen Recherchen gibt es hier derzeit kein Hardware Abstraction Layer, sodass man für alles (GPIO, Schnittstellen, etc.) direkt die Register ansprechen muss.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: WIN32 und ARM

Beitrag von mschnell »

Socke hat geschrieben:Nach meinen Recherchen gibt es hier derzeit kein Hardware Abstraction Layer, sodass man für alles (GPIO, Schnittstellen, etc.) direkt die Register ansprechen muss.
Das müsste ja auch für jeden Chip einzeln existieren. Das kann niemand leisten.
Bei Microchip gibt es dafür natürlich Libraries (.h-dateien) für C und ein komplexes Konfigurationssystem für deren IDE, aber Pascal ist nicht unterstützt.

-Michael

Socke
Lazarusforum e. V.
Beiträge: 3177
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: WIN32 und ARM

Beitrag von Socke »

mschnell hat geschrieben:
Socke hat geschrieben:Nach meinen Recherchen gibt es hier derzeit kein Hardware Abstraction Layer, sodass man für alles (GPIO, Schnittstellen, etc.) direkt die Register ansprechen muss.
Das müsste ja auch für jeden Chip einzeln existieren. Das kann niemand leisten.
Dann muss ich ja tatsächlich C-Code übersetzen ;-) Ich hatte gehofft, mir würde jemand diese Arbeit abnehmen.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Antworten