fpc-kompilieren: make install

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6884
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: fpc-kompilieren: make install

Beitrag von af0815 »

Der ARM ist nur ein Kernel, der im Verbund erzeugt wird - dadurch wird die Sache recht unübersichtlich :shock:

Edit: Damit meine ich, ein ARM Kernel mit den verschiedensten Baugruppen herum auf einem Die. Je nach mit Floatingpoint Unit, Baugruppe, Speicherausbau, I/Os etc. heisst das Ding anders und bei jeden Hersteller etwas anders.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: fpc-kompilieren: make install

Beitrag von Scotty »

Bin eben über die Build-FAQ gestolpert: http://www.stack.nl/~marcov/buildfaq.pdf" onclick="window.open(this.href);return false;

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6884
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: fpc-kompilieren: make install

Beitrag von af0815 »

Scotty hat geschrieben:Bin eben über die Build-FAQ gestolpert: http://www.stack.nl/~marcov/buildfaq.pdf" onclick="window.open(this.href);return false;
Hab ich schon im 2. Post in diesen Thread angeregt. Ist immer eine gute Sache, die zu lesen. Zusätzlich kann ich das Freepascalbuch empfehlen. Leider wird dort auf Crosscompiling nicht wirklich eingegangen, dafür aber viele andere wichtige Informationen gegeben. Wa sich zusätzlich mache, das ich probiere das makefile selbst zu verstehen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Socke
Lazarusforum e. V.
Beiträge: 3178
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:

fpc und ARM920T

Beitrag von Socke »

Nach einiger Zeit, hab ich mich mal wieder dran gesetzt.
Ergebnis: mein Centrality ARM920T scheint mit den Samsung ARM920T Modellen kompatibel (identisch?) zu sein. Von Samsung gibt es die Modelle S3C2442 und S3C2440, wobei ersterer auch im Neo FreeRunner (OpenMoko) verbaut ist. Wikipedia (ich meine, der Eintrag wäre vor einigen Wochen noch nicht da gewesen) sagt dazu:

Code: Alles auswählen

Family: ARM9TDMI
Architecture Version: ARMv4T
Core: ARM920T
Ich habe versucht ein einfaches grafisches Programm (mit Button und ShowMessage) zu erstellen. Heraus kommt nur ein "Application MN6.exe has performed an illegal operation and will be shut down... Program: MN6.exe, Exception: 0xC00000FD, Address: 8CE81F24". Die Exception soll angeblich ein Stack Overflow sein.

Die Compiler-Einstellungen sind:

Code: Alles auswählen

-CfSOFT -dFPC_ARMEL -Cparmv4
Ich benutze sie sowohl als CROSSOPT für den Compiler als auch für LCL und mein Test-Programm.

Ist das vom FPC genutzte Instruction Set "armv4" mit "armv4t" kompatibel? Habt ihr noch irgendwelche Ideen? af0815, laufen deine Programme schon auf dem FreeRunner und welche Parameter verwendest du?
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6884
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: fpc-kompilieren: make install

Beitrag von af0815 »

Ich habe mir meinen FreeRunner (derzeit) abgestochen. Beim installieren von Debian ist was schiefgelaufen ;-)

Die Optionen schauen gleich aus, mit meinen letzten Versuchen, dort bin ich dann in den Tiefen des abi/eabi und deren Versionen hängen geblieben.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: fpc-kompilieren: make install

Beitrag von Scotty »

Ich würde vergleichen, was file <program> bzw. readelf <program> des eigenen Programms im Vergleich zu installierten wie /usr/bin/as ausgeben. Bei readelf kann man mit dem Schalter -a Zusatzinformationen bekommen. Bei mir steht dort u.a.

Code: Alles auswählen

ELF Header:
Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
Class: ELF32
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: EXEC (Executable file)
Machine: ARM
Version: 0x1
...
File Attributes
Tag_CPU_name: "ARM10TDMI"
Tag_CPU_arch: v5TE
Tag_ARM_ISA_use: Yes
Tag_ABI_PCS_wchar_t: 4
Tag_ABI_FP_denormal: Needed
Tag_ABI_FP_exceptions: Needed
Tag_ABI_FP_number_model: IEEE 754
Tag_ABI_align8_needed: Yes
Tag_ABI_align8_preserved: Yes, except leaf SP
Tag_ABI_enum_size: int

Marcovaldo
Beiträge: 43
Registriert: Mo 20. Okt 2008, 21:08

Re: fpc-kompilieren: make install

Beitrag von Marcovaldo »

Scotty hat geschrieben:Ich würde vergleichen, was file <program> bzw. readelf <program> des eigenen Programms im Vergleich zu installierten wie /usr/bin/as ausgeben. Bei readelf kann man mit dem Schalter -a Zusatzinformationen bekommen. Bei mir steht dort u.a.

Code: Alles auswählen

Hallo alle!
 
Hab endlich ein wenig(noch zuwenig) Zeit gefunden und mir basierend auf den Skripten von Kjow (das Konvertieren aus dem RPM lief bei mir schief, habe statt dessen inoffizielle .debs installiert) einen Ubuntu nach ARM-LINUX Crosscompiler zu bauen.
 
Das damit (cross-) kompilierte 'Hello ARM' liefert einen segmentation fault....
 
Ich habe jetzt 
1) einen ARM Linux native compiler (bei dem zumindest die Textbeispiele rennen)
2) Den oben beschriebenen (FPC 2.5.1 basierenden) crosscompiler.
 
readelf -a liefert bei mir unter anderem(nur Unterschiede):
 
NATIVE ARM-LINUX FPC                                    CROSS-FPC                                                      SCOTTY's Beispiel
läuft                                                                    segmentation fault
OS/ABI:   ARM                                                    UNIX - System V                                                 UNIX - System V                                               
Machine:  ARM                                                    ARM                                                                   ARM
Tag_CPU_name: Eintrag fehlt ??                          Eintrag fehlt ???                                                  "ARM10TDMI"
Tag_CPU_arch:  Eintrag fehlt ??                            v5TE                                                                  v5TE
Tag_ARM_ISA_use: Eintrag fehlt ??                      Yes                                                                    Yes
Tag_THUMB_ISA_use    "                                                                                                               Thumb-1
Tag_ABI_PCS_wchar_t:   "                                                                                                               4
Tag_ABI_FP_denormal:     "                                                                                                             Needed
Tag_ABI_FP_exceptions:    "                                                                                                           Needed
Tag_ABI_FP_number_model: "                                                                                                         IEEE 754
Tag_ABI_align8_needed:        "                                                                                                        Yes
Tag_ABI_align8_preserved:    "                                                                                                        Yes, except leaf SP
Tag_ABI_enum_size:          "                                                                                                           int

Warum fehlen ein Teil der Tags? Wo sind die zu konfigurieren?


LG,


Marcovaldo

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: fpc-kompilieren: make install

Beitrag von Scotty »

Die Angaben hängen natürlich von der Hardware ab. Und selbst wenn du auch ein Sheeva-Plug hast, könnten die verbauten Komponenten bei dir aktueller sein und andere Werte liefern. Es war eher eine Idee, wie man Hinweise auf die verbaute Hardware bekommen kann. Ich habe außerdem empfohlen, eines der zum OS des ARM-Gerätes gehörenden Executables (z.B. /usr/bin/as, das sollte überall zu finden sein) mit dem eigenen Programm zu vergleichen.

Socke
Lazarusforum e. V.
Beiträge: 3178
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: fpc-kompilieren: make install

Beitrag von Socke »

af0815 hat geschrieben:Ich habe mir meinen FreeRunner (derzeit) abgestochen. Beim installieren von Debian ist was schiefgelaufen ;-)

Die Optionen schauen gleich aus, mit meinen letzten Versuchen, dort bin ich dann in den Tiefen des abi/eabi und deren Versionen hängen geblieben.
Schade. Mit dem Debug-Board kannst du den doch wieder neu flashen?

Scotty: Gute Idee. file liefert leider nur die Information, dass bei mir ein Win32-PE-Image im Einsatz ist :( readelf bringt nicht viel (arm-wince-pe-readelf auch nicht). Deshalb habe ich mich an ein Programm namens "PE Explorer" erinnert. Die Testversion gibt folgende Unterschied und Gemeinsamkeiten zwischen meinem FPC-Programm und einer funktionierenden Navi-Software:

Code: Alles auswählen

FPC-Programm
Machine: 0x01C0 -> IMAGE_FILE_MACHINE_ARM -> ARM little endian
Linker Version: 0x2802 -> 2.40
Operating System Version: 4.0
Image Version: 1.0
Subsystem Version: 3.0
Win32 Version Value: Reserved
Subsystem: 0x0009 -> WinCE GUI
 
Navi-Software
Machine: 0x01C2 -> IMAGE_FILE_MACHINE_THUMB -> Thumb
Linker Version: 0x1806 -> 6.24
Operating System Version: 4.0
Image Version: 0.0
Subsystem Version: 4.20
Win32 Version Value: Reserved
Subsystem: 0x0009 -> WinCE GUI
Spontan würde ich sagen, dass das Problem vielleicht an dem Machine (=Instruction Set?) zusammen hängt.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Socke
Lazarusforum e. V.
Beiträge: 3178
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: fpc-kompilieren: make install

Beitrag von Socke »

Nachtrag zu den Instruction Sets:
Die ARM920T-Architektur scheint ein armv4-Kern mit Thumb-Erweiterung zu sein. Das heißt: normaler armv4-Code (32 bit) kann ganz normal ausgeführt werden. Das Thumb Instruction Set ist eine Zusammenfassung von einigen 32bit-Befehlen, die auf 16-Opcode komprimiert sind. Sprich ein 16 bit-Programm wird intern als 32 bit-Programm ausgeführt. Quelle: http://www.arm.com/products/processors/ ... tab=Thumb+
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6884
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: fpc-kompilieren: make install

Beitrag von af0815 »

Lazarus/FPC können nicht Thumb kompilieren, sondern nur arm. Quelle: Freepascal 2 bzw. Lazarus Buch.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Socke
Lazarusforum e. V.
Beiträge: 3178
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: fpc-kompilieren: make install

Beitrag von Socke »

af0815 hat geschrieben:Lazarus/FPC können nicht Thumb kompilieren, sondern nur arm. Quelle: Freepascal 2 bzw. Lazarus Buch.
Thumb ist ja mehr oder weniger nur ein 16bit-Instructionset, das in Hardware auf 32bit ausgeführt wird. Trotzdem sollte laut der genannten Beschreibung auch normaler ARM-Code ausgeführt werden können.

Jemand hat aber wohl schon ein FPC-Programm auf dem Neo FreeRunner zum Laufen gebracht: http://bugs.freepascal.org/view.php?id=14100
Ich habe mal ein kleines Testtextprogramm geschrieben (es soll nur eine Datei schreiben) und mit diesen Einstellungen getestet: WinCE lässt nach einiger Zeit ein Fehler-Pling ertönen und reagiert nur noch auf den Reset-Knopf :(
Edit: Das ist mein Compiler-make-Aufruf:

Code: Alles auswählen

make all crossinstall OS_TARGET=wince CPU_TARGET=arm INSTALL_PREFIX=/opt/fpc BINUTILSPREFIX=arm-wince-pe- FPC=/usr/lib/fpc/2.4.0/ppc386 CROSSOPT='-CfSOFT -CaEABI -darm -dFPC_ARMEL -gl -O- -dFPC_ABI_EABI -CpARMV4'
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

marcov
Beiträge: 1103
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: fpc-kompilieren: make install

Beitrag von marcov »

af0815 hat geschrieben:Lazarus/FPC können nicht Thumb kompilieren, sondern nur arm. Quelle: Freepascal 2 bzw. Lazarus Buch.
Das ist 2.4.0, Alt :-)

Auf 2009-10-04 11:03:4 (r13801) ist eine Arm-thumb Branche eingemerged. Also es konnte das 2.5.1 es schon unterstützt. Ob es genügt kann nur testen ausweisen.

_Bernd
Beiträge: 145
Registriert: Di 13. Feb 2007, 11:16

Re: fpc-kompilieren: make install

Beitrag von _Bernd »

marcov hat geschrieben:
af0815 hat geschrieben:Lazarus/FPC können nicht Thumb kompilieren, sondern nur arm. Quelle: Freepascal 2 bzw. Lazarus Buch.
Das ist 2.4.0, Alt :-)

Auf 2009-10-04 11:03:4 (r13801) ist eine Arm-thumb Branche eingemerged. Also es konnte das 2.5.1 es schon unterstützt. Ob es genügt kann nur testen ausweisen.
nein, braucht man nicht testen ;-)
fpc kann Thumb-2, das läuft nicht auf den hier erwähnten ARM-cores (ARM920T o. ä.). Diese verwenden Thumb-1.
Gruß, Bernd.

Socke
Lazarusforum e. V.
Beiträge: 3178
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: fpc-kompilieren: make install

Beitrag von Socke »

marcov hat geschrieben:Das ist 2.4.0, Alt :-)

Auf 2009-10-04 11:03:4 (r13801) ist eine Arm-thumb Branche eingemerged. Also es konnte das 2.5.1 es schon unterstützt. Ob es genügt kann nur testen ausweisen.
Ich benutze lieber hoffnungslos veraltete Software, die stabil läuft als welche die immer abstürzt. Wenn ich aber neuere Software brauche, damit es überhaupt funktioniert, wäre das eine Option, wenn nicht
_Bernd hat geschrieben:nein, braucht man nicht testen ;-)
fpc kann Thumb-2, das läuft nicht auf den hier erwähnten ARM-cores (ARM920T o. ä.). Diese verwenden Thumb-1.
Gruß, Bernd.
Ich hatte gerade wieder Hoffnung bekommen, das hier doch noch irgendwann zum Laufen zu bringen... vielleicht ist das auch nur ein subtiler Hinweis des Schicksals, dass ich doch C oder C++ lernen soll :D
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Antworten