Forum: Compiler & IDEs uVision & Double/Float Problem mit FPU


von Pepe (Gast)


Lesenswert?

Hallo.
Ich verwende einen STM32F4 und möchte gerne die FPU für Berechnungen 
verwenden.
Als Compiler verwende ich Keil uVision 5.15 / Armcc V5.05 Upd. 2

Hab folgenden Codeabschnitt:

double d;
d = (double) aActCmd.Value.I32;

( .I32 = INT, der weiter oben definiert ist )

Wenn ich in den Target-Optionen die FPU auf "Not used" stelle, 
funktioniert der Code. Sobald ich aber auf "Use Single Precision" 
stelle,
wird d immer auf 0 (annähernd, 2,...e-314) gesetzt.

Mir ist klar, dass double nicht mit der FPU funktioniert, aber ich hätte 
gerne einige Werte genauer (darf langsam per Prozessor sein) und andere 
Werte sollten dann doch schneller per FPU berechnet werden. Da reicht 
mir dann auch float-Genauigkeit.

Wo liegt mein Fehler?

Vielen Dank, Pepe.

von Jim M. (turboj)


Lesenswert?

Vermutlich wird die falsche C-Lib gelinkt. Dem Linker musst Du die FPU 
auch irgendwie mitteilen, es ändern sich die Aufruf Konventionen für 
Double.

von Pepe (Gast)


Lesenswert?

Wenn ich die FPU in den Target-Options aktiviere, wird sowohl in den 
Compileroptionen als auch in den Linkeroptionen der Eintrag
"--cpu Cortex-M4.fp" verwendet. Sollte doch eigentlich passen, oder ?

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.