私はSAM3Nアームcortex-M3マイクロコントローラ用のCプログラムを作成しています。浮動小数点数を印刷しようとすると、単に 'f'が出力されます。 例:printf("%f",43.12);
はf
のみを出力し、43.12
は出力しません。arm-none-eabi-gcc:printfを使用してフロート番号を印刷する
しかし、整数で印刷すると問題はありません。
フロートのフルプリントを有効にするにはどうすればよいですか?私はコンパイラがデフォルトで、コードサイズを減らすためにフロート印刷を無効にしていることを知っています(つまり、カットダウンバージョンをリンクしているようです)。また、makefileにはCFLAGS=-Dprintf=iprintf
が使用されていません。
ツールの詳細:
- ARM/GNU Cコンパイラ:(crosstool-NG 1.13.1 - アトメルのビルド:13)アトメルスタジオ6.0に付属しているツールの上4.6.1
- 。
AFAIKこのマイクロコントローラはFPUを持っていません。したがって、完全なprintf機能を有効にする方法については、libcにコンパイラのドキュメントを参照する必要があります。例えばAVRでは、 "-Wl、-u、vfprintf -lprintf_flt -lm"でした。別の方法として、ツールベンダーに連絡する必要があります。これはおそらく既知の問題です。 –
残念ながら、この-lprintfはAVR-GCCのみで動作しますが、ARMでは動作しません。 – Prabhu