Forum: Compiler & IDEs Softfloat-Toolchain für ARM


von O. D. (odbs)


Lesenswert?

Ich muß an einem First-Level-Bootloader für ein ARM-System herumbasteln.

Dafür brauche ich eine softfloat-Version von gcc, da zur Laufzeit des 
Programms nichts zur Verfügung steht, was die entsprechenden Exceptions 
abfangen kann.

Leider gelingt es mir nicht, den gcc als softfloat-Version zu bauen, 
obwohl ich die entsprechenden Schalter benutze. Im Netz finde ich eine 
Menge Leute mit ähnlichen Problemen, aber leider keine Lösung.

Kennt sich jemand besser aus und kann helfen?

von hp-freund (Gast)


Lesenswert?


von O. D. (odbs)


Lesenswert?

Nein, den Patch kannte ich noch nicht. Ich benutze allerdings auch nicht 
buildroot... Ich werde das mal probieren. Danke schonmal.

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

First-Level Loader und float? Das passt irgendwie nicht zusammen. Für 
was brauchst du denn floating point beim booten des Systems?

Selberbauen ist aber einfach: 
http://ymorin.is-a-geek.org/projects/crosstool

Matthias

von O. D. (odbs)


Lesenswert?

Ich brauchte kein Float, lediglich Integer-Division und Modulo (auf 
welcher Page im Flash ist die Adresse X?)...

Der GCC, den mir crosstool ausgespuckt hat, konnte das nicht. Division 
ist dem ARM unbekannt, deshalb muß der Compiler das in Software 
emulieren. Die "bare metal" Version des Compilers erzeugt Code, der 
versucht, entsprechende Routinen aus einer C-Lib aufzurufen, die dann 
natürlich nicht gefunden werden.

Das Problem ist jetzt aber gelöst, ich habe die entsprechenden 
Assembler-Routinen aus der Lib kopiert und manuell dazugelinkt. Und 
schon funktioniert es.

Der Begriff "softfloat" war natürlich irreführend.

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

mal mit -lgcc versucht? Die entsprechenden Routinen finden sich in der 
libgcc.a und die wird eigentlich immer beim Bauen des Compilers gleich 
mitgebaut. Mit crosstools-ng ist das auch wirklich einfach.

Matthias

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.