Forum: Compiler & IDEs Hello World mit uclinux auf Olimex LPC-E2468 Board


von Stefan B. (forscher)


Lesenswert?

Hallo,
Bisher konnte ich einige Erfahrungen mit dem LPC2368 sammeln. Dabei 
verwendete ich den arm-elf-gcc unter (Suse)Linux aber ohne 
Betriebssystem auf dem Zielboard. Das lief auch ganz gut. Jetzt möchte 
ich auf uclinux weitermachen aber da hänge ich ein wenig bei den ersten 
Schritten.
Ich verwende das Olimex Board LPC-E2468 im Auslieferzustand. Toolchain, 
Kernel, ROMfs selbst bauen, hebe ich mir für später auf :-).
Ich kann das Board seriell über USB mit Kermit ansprechen und bekomme 
auch die Shell und kann das Netzwerk konfigurieren. Mit dem vorhandenen 
wget kann ich auch erstmal Dateien von meinem Entwicklungsrechner auf 
z.B. /var im Zielsystem kopieren (und mit dem httpd auch zurück).
Jetzt möchte ich einfache Applikation (Hello World) auf dem Zielsystem 
laufen lassen. Die übersetzte ich mit dem auf der CD mitgelieferten 
Compiler.

arm-linux-uclibc-gcc -I/usr/cross/include -o test main.c

Das geht ohne Fehler, mit dem Tool elf2flt wandle ich test dann in das 
Flat-Format um. (habe ich im Netz aus cdk-nios-uclinux-tools geholt).
Wenn ich jetzt diese Anwendung per wget auf das Zielsystem hole, 
ausführbar mache und starte tut sich einfach nichts. Der Prompt kehrt 
zurück und ps zeigt auch keinen Prozess an. Habe auch schon eine 
Endlos-Schleife (Blink-LED) versucht, auch dort kehrt der Prompt sofort 
zurück.

Habe ich hier irgendwas übersehen, oder ist die Toolchain falsch ?
Da bin ich jetzt schon eine zeitlang am Schwimmen...

Danke für Hinweise !
Stefan

von Rolf Magnus (Gast)


Lesenswert?

Wie führst du es denn genau aus? Hast du daran gedacht, daß du unter 
Linux - sofern du im Verzeichnis des Executables bist - './test' 
schreiben mußt?

von Stefan B. (forscher)


Lesenswert?

Rolf,
ja, daran habe ich schon gedacht. Sonst kommt "Bad command or file 
name".
Irgendwie habe ich die Vermutung, dass es an der Toolchain liegt. Es ist 
doch richtig, dass arm-elf-gcc für Boards ohne OS (also typisches 
kleines uC-System) benutzt wird und arm-linux-uclib-gcc für Projekte, 
die nachher unter uclinux laufen sollen, oder ?
Stefan

von Rolf Magnus (Gast)


Lesenswert?

> ja, daran habe ich schon gedacht. Sonst kommt "Bad command or
> file name".

Das erstaunt mich etwas, denn eigentlich gibt's unter Linux bzw. in der 
Shell normalerweise ein eingebautes Tool mit Namen 'test'. Und das hat 
beim Aufruf ohne Argumente eben genau den Effekt, daß es gar nichts tut.

> Irgendwie habe ich die Vermutung, dass es an der Toolchain liegt. Es
> ist doch richtig, dass arm-elf-gcc für Boards ohne OS (also typisches
> kleines uC-System) benutzt wird und arm-linux-uclib-gcc für Projekte,
> die nachher unter uclinux laufen sollen, oder ?

Klingt jetzt nicht so falsch. Wenn das Executable nicht passen würde, 
müßte eigentlich auch eine Fehlermeldung kommen.

von Stefan B. (forscher)


Lesenswert?

Das Kommando test gibt es offensichtlich auf dem uclinux nicht. Du hast 
recht, das wäre ganz schön heimtückisch. Aber es gab bei mir natürlich 
auch schon verschiedene Versionen mit Namen test2 .. etc.

Vielleicht gibt es ja jemand, der ein ausführbares hello world für einem 
arm7tdmi und uclinux besitzt und könnte mir das schicken. Dann wäre 
zumindest klar, dass es nicht am Zielsystem liegt.
Stefan

von Emanuel S. (emanuel)


Angehängte Dateien:

Lesenswert?

Hier ein kleines Hallo Welt Programm als flat-binary bei mir geht es 
unter uclinux und dem gleichen Board.
einfach mit './hallo-welt' aufrufen.

von maik (Gast)


Lesenswert?

Hallo,
Ich habe das gleiche Problem.
Gibt es eine Lösung?

Maik

von Emanuel S. (emanuel)


Lesenswert?

Ja, die Lösung steht zwei Einträge drüber zum Download bereit ...

von Werner B. (werner-b)


Lesenswert?

Emanuel S. schrieb:
> Ja, die Lösung steht zwei Einträge drüber zum Download bereit ...

Du bist vielleicht ein Komiker!
Es geht doch nicht um ein "Hello World" Programm, sondern um das 
Erstellen eines eigenen Programms.

von Emanuel S. (emanuel)


Lesenswert?

Wenn eine richtige Frage auf mein Programm gestellt worden wäre hätte 
ich eher geantwortet, aber es wurde ja erst nach einem Testprogramm 
gefragt ...

Nun gut also dann:

Am einfachsten ist es wenn man zwei Toolchains verwendet:
Für den Kernel und das Romfs die ARM-Linux-Toolchain
Für nachträglich erstellte Programme im Userspace die arm-elf-toolchain

mit der arm-elf-toolchain compilieren mit:
arm-elf-gcc -static -elf2flt -o testprog testprog.c

danach sollte es gehen ... so ist auch des hello-world programm oben 
erstellt.

http://linuxwiki.hto.fh-deggendorf.de/index.php/Embedded_Linux

von Emanuel S. (emanuel)


Lesenswert?

Hier noch den link zur Toolchain:

www.uclinux.org/pub/uClinux/arm-elf-tools/arm-elf-tools-20030314.sh

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.