mikrocontroller.net

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


Autor: Oliver Döring (odbs)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: hp-freund (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Oliver Döring (odbs)
Datum:

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

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Oliver Döring (odbs)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.