ARM uClinux FLAT Code erzeugen

Gast #1103704
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
1
./hallo
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
#1104669
Hi

Hier die Lösung, falls jemand das gleiche Problem haben sollte.

Der Assemblercode, wie er oben zu sehen ist, ist korrekt für ein NSLU2 
(ARM9) mit Debian. Da uClinux ein Binary FLAT Format benötigt (ARM7), 
muss der Label "_start" auf "main" geändert werden, weil noch ein 
anderer Programmcode hinzugelinkt wird, das aber im Kommandozeilenaufruf 
nicht ersichtlich ist.

Den Code mit folgendem Befehl Assemblieren:
1
arm-elf-gcc -o hallo hallo.s -I/usr/local/arm-elf/include -Wl,-elf2flt

Und nun läufts auch.

bye, Daniel

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.