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?
Nein, den Patch kannte ich noch nicht. Ich benutze allerdings auch nicht buildroot... Ich werde das mal probieren. Danke schonmal.
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.