Code: Alles auswählen
Model TS-212 TS-219P II
Segment Home/SOHO Home/SOHO
OS Embedded Linux Embedded Linux
CPU Marvell 1.2 GHz Marvell 2.0 GHz
Memory 256MB RAM 512MB RAM
Flash 16MB 16MB

Code: Alles auswählen
Model TS-212 TS-219P II
Segment Home/SOHO Home/SOHO
OS Embedded Linux Embedded Linux
CPU Marvell 1.2 GHz Marvell 2.0 GHz
Memory 256MB RAM 512MB RAM
Flash 16MB 16MB
Code: Alles auswählen
root@VMDEBPASCAL:/home/andi/fpc# make crossinstall CPU_TARGET=arm OS_TARGET=linux CROSSBINDIR=/home/andi/CodeSourcery/Sourcery_G++_Lite/bin BINUTILSPREFIX=arm-none-linux-gnueabi- OPT=-dFPC_ARMEL INSTALL_PREFIX=/usr/local PP=/home/andi/fpc/compiler/ppc386
Code: Alles auswählen
root@VMDEBPASCAL:/home/andi/fpc/compiler# ./ppcrossarm -i
Free Pascal Compiler version 2.7.1
Compiler Date : 2013/02/03
Compiler CPU Target: arm
Supported targets:
Linux for ARMEL
WinCE for ARM
GameBoy Advance
PalmOS
Nintendo DS
Embedded
Symbian OS for ARM
Darwin for ARM
Supported CPU instruction sets:
ARMV3,ARMV4,ARMV4T,ARMV5,ARMV5T,ARMV5TE,ARMV5TEJ,ARMV6,ARMV6K,ARMV6T2
ARMV6Z,ARMV7,ARMV7A,ARMV7R,ARMV7M,ARMV7EM
Supported FPU instruction sets:
SOFT,LIBGCC,FPA,FPA10,FPA11,VFPV2,VFPV3,VFPV3_D16,FPV4_S16
Supported ABI targets:
DEFAULT
SYSV
AIX
EABI
ARMEB
EABIHF
Supported Optimizations:
REGVAR
STACKFRAME
LOOPUNROLL
TAILREC
CSE
ORDERFIELDS
FASTMATH
Supported Whole Program Optimizations:
All
DEVIRTCALLS
OPTVMTS
SYMBOLLIVENESS
Supported Microcontroller types:
LPC2114,LPC2124,LPC2194,LPC1754,LPC1756,LPC1758,LPC1764,LPC1766,LPC1768
AT91SAM7S256,AT91SAM7SE256,AT91SAM7X256,AT91SAM7XC256,STM32F100X4
STM32F100X6,STM32F100X8,STM32F100XB,STM32F100XC,STM32F100XD,STM32F100XE
STM32F101X4,STM32F101X6,STM32F101X8,STM32F101XB,STM32F101XC,STM32F101XD
STM32F101XE,STM32F101XF,STM32F101XG,STM32F102X4,STM32F102X6,STM32F102X8
STM32F102XB,STM32F103X4,STM32F103X6,STM32F103X8,STM32F103XB,STM32F103XC
STM32F103XD,STM32F103XE,STM32F103XF,STM32F103XG,STM32F107X8,STM32F107XB
STM32F107XC,LM3S1110,LM3S1133,LM3S1138,LM3S1150,LM3S1162,LM3S1165
LM3S1166,LM3S2110,LM3S2139,LM3S6100,LM3S6110,LM3S1601,LM3S1608,LM3S1620
LM3S1635,LM3S1636,LM3S1637,LM3S1651,LM3S2601,LM3S2608,LM3S2620,LM3S2637
LM3S2651,LM3S6610,LM3S6611,LM3S6618,LM3S6633,LM3S6637,LM3S8630,LM3S1911
LM3S1918,LM3S1937,LM3S1958,LM3S1960,LM3S1968,LM3S1969,LM3S2911,LM3S2918
LM3S2919,LM3S2939,LM3S2948,LM3S2950,LM3S2965,LM3S6911,LM3S6918,LM3S6938
LM3S6950,LM3S6952,LM3S6965,LM3S8930,LM3S8933,LM3S8938,LM3S8962,LM3S8970
LM3S8971,LM3S5951,LM3S5956,LM3S1B21,LM3S2B93,LM3S5B91,LM3S9B81,LM3S9B90
LM3S9B92,LM3S9B95,LM3S9B96,SC32442B,THUMB2_BARE
This program comes under the GNU General Public Licence
For more information read COPYING.v2
Please report bugs in our bug tracker on:
http://bugs.freepascal.org
More information may be found on our WWW pages (including directions
for mailing lists useful for asking questions or discussing potential
new features, etc.):
http://www.freepascal.org
Code: Alles auswählen
program Hello;
begin
WriteLn('Hello World');
end.
Code: Alles auswählen
root@VMDEBPASCAL:/home/andi/prj# ppcrossarm -Tlinux -O- -XP -Fu/home/andi/fpc/rtl/units/arm-linux/ -XParm-none-linux-gnueabi- -FD/home/andi/CodeSourcery/Sourcery_G++_Lite/bin /home/andi/prj/hello.pp
Code: Alles auswählen
[/share/Public] # readelf -a hello
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
Entry point address: 0x80a0
Start of program headers: 52 (bytes into file)
Start of section headers: 40216 (bytes into file)
Flags: 0x5000002, has entry point, Version5 EABI
Size of this header: 52 (bytes)
Size of program headers: 32 (bytes)
Number of program headers: 3
Size of section headers: 40 (bytes)
Number of section headers: 8
Section header string table index: 7
.....
Attribute Section: aeabi
File Attributes
Tag_CPU_arch: v5TE
Tag_ARM_ISA_use: Yes
[/share/Public] # ./hello
Hello World
[/share/Public] #
Same hereaf0815 hat geschrieben: Der Strom ist für mich das Argument, ein alter PC als Server benötigt viel mehr an Leistung.
Super !af0815 hat geschrieben: [/share/Public] # ./hello
Hello World
[/share/Public] #
Der Bootstrap von absolut Null weg ist nicht ganz sauber. Ein Tool hat ein Henne <-> Ei Problem. Also nichts was nicht mit einem Symlink zum Beheben geht.mschnell hat geschrieben:Was Dir aber geholfen hat den fpc selbst (also ein x86-Programm) zu erzeugen, habe ich nicht verstanden. Im anderen Thread hattest Du ja geschrieben, dass das nicht funzt)
Soweit ich das verstehe brauchst Du den Standard - gdb auf beiden Systemen. Auf dem PC den ganz normalen, auf dem Target gdbserver.af0815 hat geschrieben:Bezüglich Debuggen habe ich noch einen weiten Weg vor mir. Auf den Grundsystem habe ich noch keinen GDB. Mein Problem ist, welchen nehme ich auf dem System - ich habe ja keine Pakete verwendet. Darf ich den standard GDB verwenden ? Wie funktioniert bei Lazarus das Remote debugging ?!
Ich habe - bevor ich das "TAR-Paket" kannte - den fpc (2.2 oder so) aus einem Debian ("apt-get") Pakt "von hand" extrahiert. Das war mit "ar" und dann "mc" gar kein Problem. Wenn Du also das Debian Paket mit gdbserver für die richtige CPU findest, sollte es gehen.af0815 hat geschrieben:der gdbserver ist mal nicht in den ipkg's vorhanden.
Code: Alles auswählen
[/share/Public] # ./gdbserver --version
GNU gdbserver 6.8
Copyright (C) 2007 Free Software Foundation, Inc.
gdbserver is free software, covered by the GNU General Public License.
This gdbserver was configured as "arm-none-linux-gnueabi"
Du brauchst einen gdbserver (arm) der nativ passen muss und einen gdb am Host der zwar X86 ist ABER mit dem Arm gdbserver kommunizieren kann. Deshalb der Aufwand, noch dazu ist es meiner Erfahrung gesünder wenn alles aus dem selben Release kommt.mschnell hat geschrieben:Aber warum musstest Du es cross-compilieren ?
Super ! Danke.af0815 hat geschrieben:Ich habe das ganze natürlich auch mitdokumentiert,
Da hast Du vermutlich recht. "Embedded" ist nicht in....af0815 hat geschrieben:So wie es aussieht haben auch noch nicht allzuviele Personen Interesse daran![]()
So ist es ! (Die meisten wollen eine eine Cross-Toolchain nur bei "Headless" Geräten benutzen. Ich finde es aber immer sehr sinnvoll.) In der Firma will ich mittelfristig auch unsere Steuerungen auf ARM/Linux umstellen. Die Hardware ist aber momentan noch zu teuer in der (relativ kleinen) Serie zu bauen. Wenn endlich Prozessor-Chips mit genügend eingebautem RAM rauskommen, wird sich das schlagartig ändern. Da will ich natürlich vorbereitet sein.af0815 hat geschrieben:Wobei es eigentlich egal ist, für welches Armgerät man sich das baut. Wichtig ist ja, das man einmal den richtigen Toolchain findet.
Ich hab's momentan nicht eilig (mein zweites QNAP ist nicht vor der 2. Jahreshälfte geplant) , bin aber gerne bereit bereit, alles mitzumachen, was Du vorschlägst.af0815 hat geschrieben:Ich kann dir gerne vorweg meine Schritte zukommen lassen, wenn du auch das ganze direkt bei Dir testen willst.
Hmm. Beim korrekten Cross-kompilieren (mit den richtigen Libraries) sollte binär dieselbe Datei herauskommen, wie beim nativen compilieren mit derselben gcc Version auf dem Target.af0815 hat geschrieben:Du brauchst einen gdbserver (arm) der nativ passen muss und einen gdb am Host der zwar X86 ist ABER mit dem Arm gdbserver kommunizieren kann.
Das ist klar. Aber:af0815 hat geschrieben:Gemeint ist damit ein gdb der auf X86 läuft, aber Arm spricht. Das ist die Kombination die man nur für das Crossdebuggen benötigt.