Renesas Synergy™

FAQ 3000275 : E0562310 標準入出力ライブラリ関数の使用方法について(CC-RX)

Q: 質問

RXコンパイラCC-RXを使用しています。
コード生成プラグインでSCI0ポートの設定を行い、R_SCI0_Serial_Send関数を使用してパソコンに調歩同期モードで文字列を出力する事はできています。
この状態でprintf()を使用して文字列を出力するにはどうすれば良いでしょうか?

ヘッダファイル"stdio.h"をインクルードしてprintf()をソースに記述してビルドを行うと、以下のメッセージが出力されます。

E0562310:Undefined external symbol "_write" referenced in "fflush"

ユーザー独自に_write()関数を何処かに作成する必要があるのでしょうか?


A: 回答

メッセージで要求されている通り、標準入出力ライブラリの関数を使うにはread/writeなどの低水準入出力関数の実装が必要になります。

例えば、RXファミリ E1を使用したデバッグコンソール機能(R01AN0252)のサンプルコードではprintf関数を呼び出しています。

低水準入出力関数は、プロジェクト作成により生成されたlowsrc.c, lowlvl.srcで提供していますが、デバッグコンソールへの入出力となっています。
このうち、charget/charput関数をデバッグコンソールへの入出力から、シリアル通信の1バイト入出力に置き換えるような実装を行ってください。

シリアル通信の入出力については以下のサンプルコードなどが参考になるかと存じます。
RX64M、RX71Mグループ SCIg ビットレートモジュレーション機能の使い方(R01AN2085)

適用製品

RXファミリ用C/C++コンパイラパッケージ
他にご質問がございましたら、リクエストを送信してください