
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.
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.Scotty hat geschrieben:Bin eben über die Build-FAQ gestolpert: http://www.stack.nl/~marcov/buildfaq.pdf" onclick="window.open(this.href);return false;
Code: Alles auswählen
Family: ARM9TDMI
Architecture Version: ARMv4T
Core: ARM920T
Code: Alles auswählen
-CfSOFT -dFPC_ARMEL -Cparmv4
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
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
Schade. Mit dem Debug-Board kannst du den doch wieder neu flashen?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.
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
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.af0815 hat geschrieben:Lazarus/FPC können nicht Thumb kompilieren, sondern nur arm. Quelle: Freepascal 2 bzw. Lazarus Buch.
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'
Das ist 2.4.0, Altaf0815 hat geschrieben:Lazarus/FPC können nicht Thumb kompilieren, sondern nur arm. Quelle: Freepascal 2 bzw. Lazarus Buch.
nein, braucht man nicht testenmarcov hat geschrieben:Das ist 2.4.0, Altaf0815 hat geschrieben:Lazarus/FPC können nicht Thumb kompilieren, sondern nur arm. Quelle: Freepascal 2 bzw. Lazarus Buch.
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 nichtmarcov 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 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_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.