Programme in ANSI-C für ARMv7a unter amd64 bzw. i386 entwick
Programme in ANSI-C für ARMv7a unter amd64 bzw. i386 entwick
Hallo,
ich würde gern ANSI-C Programme für Debian ARMv7a unter Debian amd64 bzw. i386 entwickeln. Wass müsste ich unter Debian amd64 bzw. i386 für Arm mit gcc installieren, dass ich crosscompile Zielplattform Arm realisieren kann?
Man könnte sicher nativ auf dem Debian des Arm Rechners entwicklen, dass hätte bezüglich zusätzlicher Hardware neben LCD sicher seine Einschränkungen.
http://elinux.org/BeagleBoardDebian
Hat da jemand Erfahrungen, kann Tipps geben?
Gruß und Dank Markus
ich würde gern ANSI-C Programme für Debian ARMv7a unter Debian amd64 bzw. i386 entwickeln. Wass müsste ich unter Debian amd64 bzw. i386 für Arm mit gcc installieren, dass ich crosscompile Zielplattform Arm realisieren kann?
Man könnte sicher nativ auf dem Debian des Arm Rechners entwicklen, dass hätte bezüglich zusätzlicher Hardware neben LCD sicher seine Einschränkungen.
http://elinux.org/BeagleBoardDebian
Hat da jemand Erfahrungen, kann Tipps geben?
Gruß und Dank Markus
Dem Überflüssigen nachlaufen, heißt das Wesentliche verpassen.
Jules Saliège
Jules Saliège
Re: Programme in ANSI-C für ARMv7a unter amd64 bzw. i386 ent
Naja, testen und debuggen kannst du ja wohl auf dem Desktop. Evtl. ist eine VM zum Bauen fuer die Zielplattform am schnellsten eingerichtet, sonst musst du dir halt eine ARM-Toolchain bauen. Dazu findet sich etwas [1,2] in meinen Bookmarks.
Gruss Cae
[1] http://www.ailis.de/~k/archives/19-ARM- ... howto.html
[2] http://www.hermann-uwe.de/blog/building ... rom-source
Gruss Cae
[1] http://www.ailis.de/~k/archives/19-ARM- ... howto.html
[2] http://www.hermann-uwe.de/blog/building ... rom-source
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.
—Bruce Schneier
Re: Programme in ANSI-C für ARMv7a unter amd64 bzw. i386 ent
Unix is user-friendly; it's just picky about who its friends are.
Re: Programme in ANSI-C für ARMv7a unter amd64 bzw. i386 ent
Hallo,
danke für die Tipps. Einige Fragen habe ich dann doch noch:
http://emdebian.org/crosstools.html >> Das sieht ganz nach dem aus was ich suche. Ich muss aber erst mal verstehen wie ins System amd64 bzw. i386 einzubinden.
Prinzip: Paketquellen einbinden?
Prinzip: apt-get install ... ?
Gruß und Dank Markus
danke für die Tipps. Einige Fragen habe ich dann doch noch:
Gibt es virtuelle Maschinen die als Host amd64 bzw. i386 sind, und Gast Arm... können?... eine VM zum Bauen fuer die Zielplattform...
Also Code erst einmal nach amd64 bzw. i386 debuggen/kompillieren? Wobei es ja gewissse Feinheiten im Code geben wird, die nicht 1:1 kompatibel sind?...testen und debuggen...
http://emdebian.org/crosstools.html >> Das sieht ganz nach dem aus was ich suche. Ich muss aber erst mal verstehen wie ins System amd64 bzw. i386 einzubinden.
Prinzip: Paketquellen einbinden?
Prinzip: apt-get install ... ?
Gruß und Dank Markus
Dem Überflüssigen nachlaufen, heißt das Wesentliche verpassen.
Jules Saliège
Jules Saliège
Re: Programme in ANSI-C für ARMv7a unter amd64 bzw. i386 ent
qemu wäre ein Kandidat. Afaik steckt der auch hinter dem Android-Emulator.Gibt es virtuelle Maschinen die als Host amd64 bzw. i386 sind, und Gast Arm... können?
cu,
niemand
Re: Programme in ANSI-C für ARMv7a unter amd64 bzw. i386 ent
Ja, qemu kann das. Ist rein in Software, also nicht Hardware-beschleunigt (weil eben kein ARM da ist), aber es laeuft auf heutigen Prozessoren sicher nicht "langsamer" als auf der typischen Embedded-Kiste. 20-Sekunden-Suchmaschine-benutzen-ungefaehr-so-geht-es-Anleitung unter [1], vergiss den wget- und ./configure-Teil oben und installiere qemu aus den Repositories. Dann rufst du qemu mit ein paar magischen Argumenten auf und schaust der Kiste beim Booten zu.mgolbs hat geschrieben:Gibt es virtuelle Maschinen die als Host amd64 bzw. i386 sind, und Gast Arm... können?... eine VM zum Bauen fuer die Zielplattform...
Gruss Cae
[1] http://www.aurel32.net/info/debian_arm_qemu
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.
—Bruce Schneier
Re: Programme in ANSI-C für ARMv7a unter amd64 bzw. i386 ent
Hallo,
danke für die tollen Tipps. Kann ich in qemu eventuell sogar ein Debian Image des realen ArmV7A - beagle bone nutzen?
Gruß Markus
danke für die tollen Tipps. Kann ich in qemu eventuell sogar ein Debian Image des realen ArmV7A - beagle bone nutzen?
Gruß Markus
Dem Überflüssigen nachlaufen, heißt das Wesentliche verpassen.
Jules Saliège
Jules Saliège
Re: Programme in ANSI-C für ARMv7a unter amd64 bzw. i386 ent
Probier's aus, entwerder es geht, oder es geht nicht. Ein direktes Hindernis sehe ich da nicht, nur der Bootloader ist bei den ARM-Dingern immer so eine Sache fuer sich. Musst du halt mal gucken, welche(n) initrd/Kernel du da mitgeben musst.
Gruss Cae
Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.
—Bruce Schneier
Re: Programme in ANSI-C für ARMv7a unter amd64 bzw. i386 ent
Hallo,
habe erst mal auf dem Arm selbst mit dem Makefile eines Projekts eine Kompilierung ohne Probleme hinbekommen. Programm läuft, trotz:
Hat auch nicht wirklich lange gedauert. Ob da die 720MHz des Arm schon hilfreich sind...
Werde jetzt mal http://emdebian.org/crosstools.html versuchen zum Laufen zu bringen. Dann soll qemu dran kommen. Habe qemu schon gestartet, muss nur mal schauen ob mein Arm Type unterstützt wird.
Kann ich in qemu eine Installation von z.B. einer Arm Debian iso & Co. realisieren (analog VMware...), oder muss ich immer auf ein fertiges Image zugreifen?
Gruß und Dank Markus
habe erst mal auf dem Arm selbst mit dem Makefile eines Projekts eine Kompilierung ohne Probleme hinbekommen. Programm läuft, trotz:
Code: Alles auswählen
make: warning: Clock skew detected. Your build may be incomplete.
Werde jetzt mal http://emdebian.org/crosstools.html versuchen zum Laufen zu bringen. Dann soll qemu dran kommen. Habe qemu schon gestartet, muss nur mal schauen ob mein Arm Type unterstützt wird.
Kann ich in qemu eine Installation von z.B. einer Arm Debian iso & Co. realisieren (analog VMware...), oder muss ich immer auf ein fertiges Image zugreifen?
Gruß und Dank Markus
Dem Überflüssigen nachlaufen, heißt das Wesentliche verpassen.
Jules Saliège
Jules Saliège
Re: Programme in ANSI-C für ARMv7a unter amd64 bzw. i386 ent
Meist ja, verlassen sollte man sich darauf aber nicht. So ist z.B. gcc-4.4 in Wheezy noch sehr verbuggt wenn es um armhf geht. chromium lässt sich damit z.B. nicht kompilieren was unter amd64 oder i386 überhaupt kein Problem ist. Mit gcc-4.6 geht es dann auch unter armhf. Eine Zeit lang ging auch das nicht da chromium einen Bug hatte der unter den arm-Architekturen generell die Kompilierung verhinderte, unter den x86-Architekturen aber nicht auftrat.Cae hat geschrieben:Naja, testen und debuggen kannst du ja wohl auf dem Desktop.
Man kann also nicht einfach auf einer Architektur entwickeln und dann davon ausgehen dass es auf allen funktioniert.
Täusch dich da mal nicht! Ehrlich gesagt habe ich keine Ahnung was aktuelle Embedded-Kisten können, aber mein Nokia N900 (3 Jahre altes Smartphone mit 850MHz Cortex A8) kompiliert chromium in Easy Debian (armel-Squeeze-chroot) dreimal schneller als mein Intel Core i7-2700k-Desktop (3,5GHz) unter qemu.Cae hat geschrieben:Ja, qemu kann das. Ist rein in Software, also nicht Hardware-beschleunigt (weil eben kein ARM da ist), aber es laeuft auf heutigen Prozessoren sicher nicht "langsamer" als auf der typischen Embedded-Kiste.
Re: Programme in ANSI-C für ARMv7a unter amd64 bzw. i386 ent
Hm. Merke: Probiere saemtliche Aussagen, die du schreibst, zuvor selbst aus... Mit ARM-qemu hatte ich mal herumprobiert, es ist gelaufen und es kam mir performant vor. Benchmarks hab' ich natuerlich nicht gefahren, die das irgendwie untermauern wuerden.
Gruss Cae
Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.
—Bruce Schneier
Re: Programme in ANSI-C für ARMv7a unter amd64 bzw. i386 ent
Hallo,
danke für die Tipps. qemu wird für meinen Arm [omap3] ausfallen, da ich dafür qemu mit gcc-3.x kompilieren müsste - leider.
Wenn ich für kleine Programme nicht mit make arbeiten will, wie kann ich den "gcc-4.3-arm-linux-gnueabi-base" von der Konsole aus aufrufen?
arm-linux-gnueabi-gcc file.c?
Wie könnte ich per Makefile nicht den "amd64-gcc" sondern den arm-linux-gnueabi-gcc ansprechen?
So:? make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-gcc
Wobei dann auf dem Arm kommt dann. binary file kann nicht ausgeführt werden - Arm Type oder
make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm omap3_evm_config oder am335x_evm_config
Wobei die omap3 / am335x_evm_config wohl der Schlüssel ist?
Über Tips und Infos wäre ich sehr dankbar.
Gruß und Dank Markus
danke für die Tipps. qemu wird für meinen Arm [omap3] ausfallen, da ich dafür qemu mit gcc-3.x kompilieren müsste - leider.
Wenn ich für kleine Programme nicht mit make arbeiten will, wie kann ich den "gcc-4.3-arm-linux-gnueabi-base" von der Konsole aus aufrufen?
arm-linux-gnueabi-gcc file.c?
Wie könnte ich per Makefile nicht den "amd64-gcc" sondern den arm-linux-gnueabi-gcc ansprechen?
So:? make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-gcc
Wobei dann auf dem Arm kommt dann. binary file kann nicht ausgeführt werden - Arm Type oder
make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm omap3_evm_config oder am335x_evm_config
Wobei die omap3 / am335x_evm_config wohl der Schlüssel ist?
Über Tips und Infos wäre ich sehr dankbar.
Gruß und Dank Markus
Dem Überflüssigen nachlaufen, heißt das Wesentliche verpassen.
Jules Saliège
Jules Saliège
Re: Programme in ANSI-C für ARMv7a unter amd64 bzw. i386 ent
Hallo,
ein "make CC=arm-linux-gnueabi-gcc-4.3" bring das Übersetzen erst einmal in Gang. Wobei die Spezifikationen zum nativen Debian Arm auf der Armhardware und dem crossarm http://emdebian.org/crosstools.html mit arm-linux-gnueabi-gcc-4.3 irgendwie nicht passen. Die erzeugten Programme sind vom "bin" Code noch unterschiedlich, der auf dem Crosssystem erzeugte Code ist auf dem Debian arm noch nicht lauffähig...
Müssen auf beiden Systemen die gleichen Kernelversionen laufen? Beim nativen Debian Arm wird 2.6.26 und beim cross über amd64 wird 2.6.18 angezeigt... Dynamisches linken der libs...
Wenn ich ein "make ARCH=armel CROSS_COMPILE=arm-linux-gnueabi-gcc-4.3" genutzt habe, entstand amd64 lauffähiger Code, warum auch immer.
Auf dem Arm System selbst funktioniert der make Befehl, ohne jegliche sonstige Anpassungen.
Gruß und Dank Markus
ein "make CC=arm-linux-gnueabi-gcc-4.3" bring das Übersetzen erst einmal in Gang. Wobei die Spezifikationen zum nativen Debian Arm auf der Armhardware und dem crossarm http://emdebian.org/crosstools.html mit arm-linux-gnueabi-gcc-4.3 irgendwie nicht passen. Die erzeugten Programme sind vom "bin" Code noch unterschiedlich, der auf dem Crosssystem erzeugte Code ist auf dem Debian arm noch nicht lauffähig...
Müssen auf beiden Systemen die gleichen Kernelversionen laufen? Beim nativen Debian Arm wird 2.6.26 und beim cross über amd64 wird 2.6.18 angezeigt... Dynamisches linken der libs...
Wenn ich ein "make ARCH=armel CROSS_COMPILE=arm-linux-gnueabi-gcc-4.3" genutzt habe, entstand amd64 lauffähiger Code, warum auch immer.
Auf dem Arm System selbst funktioniert der make Befehl, ohne jegliche sonstige Anpassungen.
Gruß und Dank Markus
Dem Überflüssigen nachlaufen, heißt das Wesentliche verpassen.
Jules Saliège
Jules Saliège