4thステップ シリアル経由でファイルを転送する

作成日:2012/02/19
最終更新日:2020/07/05

4thステップ シリアル経由でファイルを転送する

作成日:2012/02/19
最終更新日:2020/07/05

概要

本ステップでは以下を行いました。

  • シリアル受信をできるようにしました。
  • レジスタ定義を変更して全レジスタを記載しました。
  • メモリマップを見直しました。

シリアル受信を可能にする

4thステップでシリアル受信をできるようにします[1]。 外部からの入力を受けられるようになりコマンドラインインタプリタが実装可能になります。 12ステップ本の中ではプロンプトと表記されています。

メモリマップ

今回、メモリマップとしては以下のように改訂しました。

表1. メモリマップ
種別先頭番地サイズ
vectors(r)0x000000001kB
rom(rx)0x00000400255kB
buffer(rwx)0x03FFB0008kB
|data(rwx)0x03FFD0004kB
tstack(rw)0x03FFE0004kB

ソースコードの修正

[今回の成果物]

[今回追加するファイル]

  • なし

[今回修正するファイル]

  • serial.c
  • ld.scr

serial.c

μPD70F3716GCでシリアルインタフェースにアクセスする手順が送信処理と受信処理で違います。 データシート[2]や参考資料[3]を読まずに送信処理と同じように実装したところ、当然動きませんでした。

データシートや参考資料の内容からすると、受信可否については送信処理のようにUAnSTRレジスタの中を見るのではなく、 UAnRICレジスタを見なければならないようです。 また、受信エラーが発生した場合も一旦UAnRXレジスタの中身を取り出さなければなりません。

本来であれば受信エラー処理もドライバに書くべきですが、今回は省略します。 必要に応じて改訂します。 また、シリアルドライバの中のマジックナンバーを除去しました。

ld.scr

前項で肝の部分は解説しているため省略します。

確認方法

12ステップ本と同じようにxmodemでファイルを転送しました。 その後dumpを表示し、送信したファイルをバイナリエディタで開いた結果と一致することを確認しました。

結果

問題ないことを確認しました。

参考文献

  1. 坂井弘亮, 12ステップで作る組込みOS自作入門, カットシステム, 2010
  2. NEC Electronics Corporation, ユーザーズマニュアル V850ES/JG2 32ビット・シングルチップ・マイクロコントローラ ハードウェア編, NEC Electronics Corporation, 2005
  3. 浅沼重保, シリアル・ポートを使ったプログラミング, インタ-フェ-ス, vol. 33, no. 5, pp. 122-133, May. 2007