種別 | 先頭番地 | サイズ |
---|---|---|
vectors(r) | 0x00000000 | 1kB |
rom(rx) | 0x00000400 | 255kB |
buffer(rwx) | 0x03FFB000 | 8kB |
|data(rwx) | 0x03FFD000 | 4kB |
tstack(rw) | 0x03FFE000 | 4kB |
4thステップ シリアル経由でファイルを転送する
作成日 | : | 2012/02/19 |
---|---|---|
最終更新日 | : | 2020/07/05 |
4thステップ シリアル経由でファイルを転送する
作成日 | : | 2012/02/19 |
---|---|---|
最終更新日 | : | 2020/07/05 |
概要
本ステップでは以下を行いました。
- シリアル受信をできるようにしました。
- レジスタ定義を変更して全レジスタを記載しました。
- メモリマップを見直しました。
シリアル受信を可能にする
4thステップでシリアル受信をできるようにします[1]。 外部からの入力を受けられるようになりコマンドラインインタプリタが実装可能になります。 12ステップ本の中ではプロンプトと表記されています。
メモリマップ
今回、メモリマップとしては以下のように改訂しました。
表1. メモリマップ
ソースコードの修正
[今回の成果物]
[今回追加するファイル]
- なし
[今回修正するファイル]
- serial.c
- ld.scr
serial.c
μPD70F3716GCでシリアルインタフェースにアクセスする手順が送信処理と受信処理で違います。 データシート[2]や参考資料[3]を読まずに送信処理と同じように実装したところ、当然動きませんでした。
データシートや参考資料の内容からすると、受信可否については送信処理のようにUAnSTRレジスタの中を見るのではなく、 UAnRICレジスタを見なければならないようです。 また、受信エラーが発生した場合も一旦UAnRXレジスタの中身を取り出さなければなりません。
本来であれば受信エラー処理もドライバに書くべきですが、今回は省略します。 必要に応じて改訂します。 また、シリアルドライバの中のマジックナンバーを除去しました。
ld.scr
前項で肝の部分は解説しているため省略します。
確認方法
12ステップ本と同じようにxmodemでファイルを転送しました。 その後dumpを表示し、送信したファイルをバイナリエディタで開いた結果と一致することを確認しました。
結果
問題ないことを確認しました。