ARM Cortex M4 hängt beim Sinus

OP #4614694
Lesenswert?
• ▲
▼
Hallo,

ich benutze einen ST32F405 auf einem Olimex board. Den programmiere ich 
mit arm-gcc 4.8.4 unter Eclipse mit einem Makefile (angehängt). Ich 
benutze float Zahlen, die floating point unit ist eingeschaltet und die 
normalen float Rechnungen gehen auch wunderbar.

Wenn ich allerdings 'sinf' zur Berechnung eines float-Sinus benutzen 
will schmiert der Prozessor ab, er hängt irgendwo.

Ich habe mir die libm.a aus der toolchain aus 
\arm-none-eabi\lib\fpu\libm.a direkt in mein source Verzeichnis kopiert 
und linke die dazu. Ich habe das so gemacht weil ich es nicht besser 
weiss. Im list-file (angehängt) sieht auch alles ganz schick aus, es 
geht allerdings nicht.

Habe ich die richtige lib genommen?
Wie kann ich die richtige besser automatisch auswählen?
Hat das was mit dieser 'thumb' Geschichte zu tun?

Danke für Eure Zeit

Cheers
Detlef
Angehängte Dateien:
Gast #4614705
Lesenswert?
• ▲
▼
Detlef _. schrieb:
> Ich habe mir die libm.a aus der toolchain aus
> \arm-none-eabi\lib\fpu\libm.a direkt in mein source Verzeichnis kopiert
> und linke die dazu. Ich habe das so gemacht weil ich es nicht besser
> weiss.

Einfach mit -lm linken. Bei korrekt angegebenen Linker-Optionen (-mfpu, 
-mfloat-abi, -mthumb, ...) verwendet der Linker automatisch die 
richtige.

Detlef _. schrieb:
> Hat das was mit dieser 'thumb' Geschichte zu tun?
Kann sein, wenn du die ARM Mode Library genommen hast passiert irgendein 
Unsinn.

Es ist auch hilfreich, den exakten Assemblercode anzugeben, bei dem es 
abstürzt, und nicht nur "irgendwo".
#4614714
Lesenswert?
• ▲
▼
Detlef _. schrieb:
> \arm-none-eabi\lib\fpu\libm.a

Völlig falsch: Die ist für Prozessoren, die ARM Befehle können, 
Cortex-M4 kann aber nur thumb (genauer: thumb-2) Befehle.

Daher kommt gcc normalerweise als Multilib, und wenn man 
arm-none-eabi-gcc als Linker Frontend benutzt und den Cortex M4 als MCU 
und die korrekte FPU angibt, nimmt er automagisch die richtige libm.

Bei Deiner Lib gibts nur einen Hardfault, oder er meckert beim Linken.
OP #4615602
Lesenswert?
• ▲
▼
Hallo,

danke, ja, die falsche lib.

>>>>>>
Einfach mit -lm linken. Bei korrekt angegebenen Linker-Optionen (-mfpu,
-mfloat-abi, -mthumb, ...) verwendet der Linker automatisch die
richtige.
<<<<<<

Ich habe jetzt bei den Compilerflags und auch den Linkerflags jeweils 
'-lm' angegeben, Compiler/Linker beschweren sich nicht über das flag.

Trotzdem noch 'undefined reference to sinf'.

Die Ausgabe der Compiler/Linker hab ich in dem File angehängt
Habt Ihr noch eine Idee?

Danke
Cheers
Detlef
Angehängte Dateien:

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 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.