@Mathias:
Nein, ich hab den Crosscompiler "händisch" erstellt, bzw. mithilfe einer Batchdatei, aus dem englischen Lazarusforum. Wenn ich mich richtig erinner war die Batch für AVR, funktioniert mit kleinen Anpassungen auch für ARM.
Unten eine kurze Anleitung, einige Infos gibts auch auf der Wikiseite Target Embedded:
http://wiki.freepascal.org/TARGET_Embedded#ARM_Embedded
Die untenstehende Anleitung ist für Windows und eine Möglichkeit wie es geht, es muss nicht die eleganteste sein...
--
# FPC-Sourcen "Trunk" runterladen mit TortoiseSVN Repository Browser, Adresse:
https://svn.freepascal.org/svn/fpc/trunk.
# Verzeichnis im Laufwerk C anlegen, C:\Programme\fpccross, dorthinein Trunk-Ordner verschieben und in "fpc" umbenennen. Unter dem Pfad C:\Programme\fpccross\fpc muss neben anderen nun eine Datei mit Namen "Makefile" liegen.
Achtung, in den Pfaden dürfen im Allgemeinen keine Leerzeichen vorkommen.
# Binutils runterladen* und Dateien ggf. umbenennen in "arm-embedded-as.exe", "arm-embedded-ld.exe", "arm-embedded-ar.exe", "arm-embedded-objcopy.exe", "arm-embedded-objdump.exe" und "arm-embedded-strip.exe". Diese dateien sollen unter C:\Programme\fpccross\avr-embedded\binutils abgelegt werden.
*Wo man diese runterladen kann siehe Wikiseite "Target Embedded" (Link unten).
# Untenstehende Batchdatei "build_arm.bat" in den Ordner fpccross (C:\Programme\fpccross) abspeichern und die darin angegebenen Pfade ggf. anpassen.
- "FPC_PATH" ist der Pfad in dem Bereits der Freepascal-Compiler für Windows installiert ist.
- "NDK_BIN" ist der Pfad wo die Binutils (Linker, Assembler) liegen. Diese stammen nicht von Freepascal, sind aber für den Kompiliervorgang nötig, die Binutils müssen auch nach der Installation am angegebenen Pfad verbleiben.
- "INSTALL_PATH" ist der Pfad, wo der Crosscompiler für AVR hininstalliert werden soll. Man sollte die installierten Dateien später nicht mehr verschieben.
# Eingabeaufforderung als Administrator öffnen und Batchdatei aufrufen, der Crosscompiler wird erstellt. War alles in Ordnung, kommt die Meldung "Installation package fpc-all for target arm-embedded succeeded".
# Datei fpc.cfg in Verzeichnis wo der Crosscompiler liegt kopieren (C:\Programme\fpccross\arm-embedded\compiler\bin\i386-win32).
Dort sollten die folgenden Zeilen ergänzt werden (ggf. Pfade anpassen). Der Compiler selbst benötigt diese nicht, aber die Lazarus IDE, damit Hardwaredefinitionen per Strg+Klick erreichbar sind.
Code: Alles auswählen
##############################
#IFDEF EMBEDDED
#IFDEF CPUARM
-FDC:\Programme\fpccross\arm-embedded\binutils
-FuC:\Programme\fpccross\arm-embedded\compiler\units\arm-embedded\rtl
-FuC:\Programme\fpccross\arm-embedded\compiler\units\arm-embedded\*
#ENDIF
#ENDIF
# Pfad von Crosscompiler in Umgebungsvariable "Path" aufnehmen (Systemsteuerung/System und Sicherheit/System/Erweiterte Systemeinstellungen/Erweitert/Umgebungsvariablen). Computer neu starten, davor hat die Änderung keinen Effekt.
Siehe auch
http://wiki.freepascal.org/TARGET_Embedded#ARM_Embedded
build-arm.bat:
Code: Alles auswählen
REM **Installed compiler directory
SET FPC_PATH=C:\Programme\lazarus\fpc\3.0.0\bin\i386-win32
REM The compiler itself
SET PPCBIN=%FPC_PATH%\fpc.exe
REM Folder where the generated cross compiler and run-time libs are going to be saved
SET INSTALL_PATH=C:\Programme\fpccross\arm-embedded\compiler
REM We need the path to arm-embedded-* files
SET NDK_BIN=C:\Programme\fpccross\arm-embedded\binutils
REM Make all the binary files that we need accessible
SET PATH=%FPC_PATH%;%NDK_BIN%;%PATH%
REM Use the correct SUBARCH here
REM for STM32F1 use armv7m
REM Start the process
cd fpc
make clean crossall crossinstall FPC=%PPCBIN% OS_TARGET=embedded CPU_TARGET=arm SUBARCH=armv7m INSTALL_PREFIX=%INSTALL_PATH% CROSSBINDIR=%GNU_BIN_PATH% CROSSOPT="-O3 -XX -CX" BINUTILSPREFIX=arm-embedded-
cd ..