Forum: Compiler & IDEs float einschalten


von default user (Gast)


Lesenswert?

Hab hiern arm-none-eabi-gcc.exe fürn 32bit SAM3 bei dem default kein 
float eingeschaltet ist. Wie und wo kann ich das aktivieren?

Bitte bitte jetzt keine Bemerkungen wie "Float kannst du dir doch selbst 
machen".

von Oliver (Gast)


Lesenswert?

default user schrieb:
> bei dem default kein float eingeschaltet ist.

Woram merkst du das denn?

Oliver

von default user (Gast)


Lesenswert?

Grr. Du weiß genau was ich mein ;-)
1
float fl_my_float;
2
fl_my_float = 3.14;
3
sprintf( buf1,"float: %f", fl_my_float);
ergibt
float: f

von Karl H. (kbuchegg)


Lesenswert?

default user schrieb:
> Grr. Du weiß genau was ich mein ;-)

Nö.

Bei deinem Beispiel könnte es ja auch sein, dass eine spezielle 
abgespeckte Version von sprintf zum Einsatz kommt.

Wie das bei der arm Version ist, weiß ich nicht. Aber bei den AVR geht 
das prinzipiell so, dass man spezielle Libs dazulinkt, wie hier in der 
FAQ beschrieben.

von default user (Gast)


Lesenswert?

Bei den 8-Bittern hbe ich das schon gemacht, bei nem ARM aber noch 
nicht. Wundert mich sowieso, daß das bei so viel Rechenleistung 
heutzutage default nicht mit bei ist. Ich wittere einen Skandal.

von ... (Gast)


Lesenswert?

Das ist ja total verrückt!

Installier dir zum Beispiel yagarto als toolchain, da gehts.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Karl Heinz Buchegger schrieb:
> Wie das bei der arm Version ist, weiß ich nicht.

Normalerweise ist das bei ARM die Voreinstellung der newlib.  Es gibt
dann abgespeckte Versionen, die jeweils ein "i" vorangestellt haben
(also iprintf() statt printf() etc.).

Aber: soweit ich weiß, ist die Version, die Atmel zusammen mit dem
Atmel Studio vertreibt, per Compiletime-Option auf "kein Float in
stdio" voreingestellt worden.  Dagegen hilft dann natürlich nichts
außer dem Selbstcompilieren einer entsprechenden newlib (oder dem
Installieren einer Toolchain wie Yagarto).

von default user (Gast)


Lesenswert?

Ich weiß nicht ob ich yagarto haben will. Ich hab mal Netbeans für PIC18 
ausprobiert, das hat ganz schön geschwächt. Hab hier Atmel Studio mit 
Intellisense und anderen Leckereien die schnell und fehlerfrei ohne 
Gedöns funktionieren.
Aber wir wollen jetzt nicht vom Thread abkommen.
Wenn niemand ne Idee hat werd Ich halt mal selber probieren.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

default user schrieb:
> Hab hier Atmel Studio mit Intellisense und anderen Leckereien die
> schnell und fehlerfrei ohne Gedöns funktionieren.

Außer, dass dir Atmel halt das FP-stdio vorenthalten hat.

"fehlerfrei" kann man das natürlich trotzdem noch nennen, denn es ist
ja offenbar deren volle Absicht.

Warum du Yagarto mit Netbeans für PIC18 vergleichst, ist nicht klar.
Äpfel mit Schraubenziehern verglichen?

> Wenn niemand ne Idee hat werd Ich halt mal selber probieren.

Reicht dir denn die Aussage, dass es einfach bei Atmel Studio's
mitgelieferter Newlib-Version nicht dabei ist, nicht als "Idee"?

Mach doch bei denen ein Support-Ticket auf dafür.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Scheinbar haben sie mittlerweile eine Version mit FP-printf:

http://support.atmel.com/bin/customer.exe?=&action=viewKbEntry&id=1652

Vermutlich warst du nicht der erste, der das haben wollte …

von default user (Gast)


Lesenswert?

>Scheinbar haben sie mittlerweile eine Version mit FP-printf:
Tausend Dank!

Ich werd's gleich mal probieren. Hab gerade mit dtostrf experimentiert 
aber da scheint's wohl in der ASF verschiedene stdlib.h Versionen zu 
geben, in der einen ist es drin, in der anderen nicht...



73

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

default user schrieb:
> mit dtostrf experimentiert

Das gibt's nun in der avr-libc.  Mehr oder minder historisch bedingt,
stammt aus der Zeit, bevor die avr-libc überhaupt printf() hatte
(ganz zu schweigen von FP-printf).

von default user (Gast)


Lesenswert?

Supi, float in printf läuft. Macht den Code mal eben um 10k größer, aber 
wir haben's ja!

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.