• 締切済み

H8マイコンCでprintf/scanfが使いたい

C言語ですがちょっと特殊な範囲です。 H8マイコンについてどうしてもわからないことがあったので質 問させていただきます。 H8-3687+HEW4を使っております。 やりたいことはRAMではなくROMに書き込んだ状態で printf/scanfを使用したいのです。 (Htermに文字列を表示するなど・・・。) 付属のstdio.hをインクルードしてもwrite/readが足りないとコンパ イラにおこられます。 とりあえず、モニタのlower.cを改造して使えばコンパイルは 通るのですが、動作はしません。(-1が返ってきます。) write単体では動くのですが・・・。 とにかく、ROMに書き込んでprintf/scanfをを使ってPCと通信したいの で、よい方法があればよろしくお願いします。 stdioに限らず、等価な結果が得られればかまいません。 もちろん、モニタ上でprintfは問題なく動きます。

みんなの回答

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.1

printfとscanfを動かすには、標準出力と標準入力を実装する必要があります。通常はシリアルポートに割り付けることになると思います。 これは、質問者さんも書かれているようにlower.cを修正して使うことになります。厳密にはopenやcloseも実装しなければなりませんが、とりあえずwriteとreadを実装すれば十分でしょう。それぞれの関数の中の処理は自作する必要があります(H8のシリアル通信ならサンプルはいくらでもあると思います)。 > もちろん、モニタ上でprintfは問題なく動きます。 ちょっと、この意味がわかりません。 モニタというのはどのモニタのことを指していますか?

k_ppm
質問者

補足

補足させていただきます。 モニタとはルネサスの配布しているデバッグモニタです。 目的は、このモニタを使わずにprintf/scanfを使うことです。 lower.cを修正してwrite、readは実装しました。 コンパイルエラーは起こりません。 しかし、printfは動きません。 (信じられませんが、writeが呼ばれていない可能性が高いようです) 私がやったことは修正したlower.cをプロジェクトに追加しただけです。 おそらくは、printfがきちんとwriteを使ってくれるにはどうしたいいのかが問題だと思います。 ちなみにwrite単体は動作しますので、関数定義のミスの可能性は低そうです。 よろしくお願いします。

すると、全ての回答が全文表示されます。

専門家に質問してみよう