Renesas Synergy™

FAQ 1000268 : R8Cファミリ向けの開発で printf、sprintf等の標準入出力関数を使用していますが、浮動小数点の変換(%e,%E,%f,%g,%G)がうまくいきません。

回答

リリースノート「3.4.5. 標準入出力関数について」に記載しているとおり、R8C/TinyシリーズMCU用ライブラリ(r8clib.lib)では、printf、sprintf等の標準入出力関数において、浮動小数点の変換をサポートしておりません。浮動小数点の変換には多くのROM/RAMを使用するため、内蔵ROMが64KB未満のR8Cファミリでは、これらの使用が困難であるからです。

【M16Cシリーズ, R8Cファミリ用Cコンパイラパッケージ M3T-NC30WA V.5.xx 以前を使用している場合】

printf、sprintf等の標準入出力関数で浮動小数点変換を可能にするためには、r8clib.libを再構築する必要があります。
以下ディレクトリにインストールされているprint.cをこちらのファイルと差し替え、同じディレクトリにあるメイクファイルmakefile_r8c.dos(または makefile_r8c_s16.dos)を利用して、r8clib.libを作成し直してください。この時、元のprint.cは予めバックアップをとっておいてください。

print.cのデフォルトインストールディレクトリ
C:¥Program Files¥Renesas¥Hew¥Tools¥Renesas¥nc30wa¥v545r01¥src30¥lib¥print.c

【M16Cシリーズ, R8Cファミリ用C/C++コンパイラパッケージ M3T-NC30WA V.6.xx 以降を使用している場合】

printf、sprintf等の標準入出力関数で浮動小数点変換を可能にするためには、次の手順で設定を変更してください。

  1. High-performance Embedded Workshopのメニュー[ビルド]->[Renesas M16C Standard Toolchain]を選択。
  2. [標準ライブラリ]タブを選択。
  3. プルダウンメニュー[カテゴリ]で[オブジェクト]を選択。
  4. [[-nofloat]簡易入出力関数]のチェックを外す。

【ご注意】
浮動小数点の変換をサポートした場合、printf等の標準入出力関数のサイズは約4.4KB増加し、使用するRAMのサイズも約0.8KB増加するため、R8CファミリのROM/RAMサイズの小さい品種では、使用できない可能性があります。

 

他にご質問がございましたら、リクエストを送信してください