STM32F4xxx - FPU - GCC Codegenerierung

Gast #4904132
Lesenswert?
• ▲
▼
Mit Entsetzen habe ich festgestellt dass die angepriesenene
Floating Point Unit des F4xx "nur" single Precision kann.

Beim AVR GCC wird ja alles was double deklariert ist in float
behandelt. Wie ist es beim STM32F4xx? Könnt ihr mir bitte aus
dem Handgelenk schütteln was da passiert bevor ich mir ein
Kompilat erzeuge und dann nicht verstehe was im (zerlegten)
Maschinencode gemacht wird?
Gast #4904201
Lesenswert?
• ▲
▼
STMApprentice schrieb im Beitrag #4904132:
> Könnt ihr mir bitte aus
> dem Handgelenk schütteln was da passiert bevor ich mir ein
> Kompilat erzeuge und dann nicht verstehe was im (zerlegten)
> Maschinencode gemacht wird?

Man schreibt 'float' und es wird 'float' gerechnet - normalerweise mit 
der FPU. Schreibt man 'double' wird 'double' gerechnet, zwar immer per 
Software aber sehr flott: MUL und DIV ca. <= 1 µs @ 168 MHz bei 
doppelter Genauigkeit.
Gast #4904257
Lesenswert?
• ▲
▼
m.n. schrieb:
> Man schreibt 'float' und es wird 'float' gerechnet - normalerweise mit
> der FPU. Schreibt man 'double' wird 'double' gerechnet

Vorsicht an der Stelle.. der Default ist double, und die Promotion geht 
auch nach double.

float x = 1.0f;
...
x *= 3.3;

Die letztere Berechnung geht in double, weil 3.3 ohne Zusatz implizit 
double ist. Will man das vermeiden, muß man 3.3f nehmen, also float 
explizit.
Gast #4904474
Lesenswert?
• ▲
▼
m.n. schrieb:
> Die Befürchtung des TO ist doch eher

.... dass er nur float bekommt wenn er double sagt.

Oder dass er nur msec bekommt wenn er aber usec haben will
und der STM32F4xx das nicht hergibt.

Ich rechne ja schon vorsichtshalber nur mit uint64_t, aber wenn
es mal nicht anders geht .....

Danke für die Erläuterungen.
(Firma: www.harerod.de) Persönliche Seite #4904498
Lesenswert?
• ▲
▼
c-hater schrieb:
> m.n. schrieb:
>
>> wird 'double' gerechnet, zwar immer per
>> Software aber sehr flott: MUL und DIV ca. <= 1 µs @ 168 MHz bei
>> doppelter Genauigkeit.
>
> Das kann ich kaum glauben, zumindest nicht für die Division. Beweise?

Hab grad keinen F4-Aufbau auf dem Tisch liegen, deswegen kann ich's Dir 
nicht rausmessen, aber wenn jemand grad Zeit hat:

Beitrag "Floating Pointing Unit STM32F4"
Gast #4904578
Lesenswert?
• ▲
▼
c-hater schrieb:
>> wird 'double' gerechnet, zwar immer per
>> Software aber sehr flott: MUL und DIV ca. <= 1 µs @ 168 MHz bei
>> doppelter Genauigkeit.
>
> Das kann ich kaum glauben, zumindest nicht für die Division. Beweise?

Ich muß auch erst immer wieder suchen: 
Beitrag "Re: Controller mit FPU"

Die 50 ns sind geschenkt. In der Regel nehme ich immer 7 anstatt 5 
waitstates beim Flash-Zugriff. Dann muß ich nur an einer Schraube 
drehen, um auf 200 MHz umzuschalten.

Antwort schreiben

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.

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.