Hi
Eigentlich ist die Lösung ganz einfach, gemäss vielen anderen Foren. Man
kompiliert den Programmcode mit der Einstellung -elf2flt und schon hat
man ein flat Binary.
Leider ist es nicht ganz so einfach. Ich beginne mal am Anfang.
Ich habe hier einen kleinen Assemblercode, den ich als FLAT kompilieren
möchte.
1 | .text
|
2 | .align 2
|
3 | .global _start
|
4 | _start:
|
5 | adr r1, msg @ address
|
6 | mov r0, #1 @ stdout
|
7 | mov r2, #11 @ length
|
8 | swi #0x900004 @ sys_write
|
9 |
|
10 | mov r0, #0
|
11 | swi #0x900001 @ sys_exit
|
12 |
|
13 | .align 2
|
14 | msg:
|
15 | .asciz "Hallo Welt\n"
|
Dieser Assemblercode funktioniert auf einem ARM9 NSLU2 mit einer Debian
installation wunderbar. Das Assemblieren wird so gemacht.
1 | as hallo.s -o hallo.o
|
2 | ld hallo.o -o hallo
|
Danach kann das Programm mit
aufgerufen werden und der Text wird ausgegeben. Auch mit dem gcc lässt
sich das Programm Assemblieren. Dazu ist folgender Befehl nötig:
1 | gcc -o hello hello.s -nostdlib
|
Nun das Problem. Damit der Assemblercode auch auf einem ARM7 läuft, muss
man ihn konvertieren ins FLAT Model. Dazu gibt es auch einige Tools z.B.
elf2flt oder man gibt dem gcc die Option -elf2flt für den Linker mit.
Leider komme ich nicht zum gewünschten Ziel.
Weiss jemand die Lösung?
Jedenfalls Danke, dass du dir die Zeit genommen hast dies zu lesen.
bye, Daniel