next up previous contents
: バッチの消去プログラム : バッチ処理 : 仕様   目次

バッチの登録プログラム

バッチを登録するには、まず登録開始コマンドを実行する。a3〜a0に登録するバッチ番号、b7〜b0にバッチが必要とするページサイズを入力する。ページサイズはターミネータを含むサイズを指定する。マイコンはバッチの登録開始コマンドを受信すると、以下の処理を行う。
  1. Flashメモリ中に引数で指定されたページサイズ分の空き領域があるか調べ、見つかった場合その先頭アドレスを表7.1で該当するヘッダー領域に書き込む
  2. マイコンがバッチの書込み中であることを示すフラグを立てる
  3. 書き込む対象のページアドレスと残りの書込みページ数を大域変数に保持する
  4. メモリの確保が成功したことを知らせるためにバッチ番号をシリアルポートに出力する。失敗した場合は$-1$を出力する

これに続けて、シリアルポートに書き込みたいコマンドを送信していくと、マイコンは逐次コマンドをFlashメモリに書き込む。2命令分の受信が完了すると、マイコンは実際に書き込みを実行し、その後書き込む対象のページアドレスをインクリメント、残りの書き込みページ数をデクリメントする。ただし、Flashメモリに書き込みを行っている最中は、マイコンが割り込みを受け付けなくなるため、コマンドを送信したら少しの間送信を停止する必要がある。停止する時間は約1ミリ秒程あれば十分である(規格上は1ページ$250[{\mu}s]$であり、読み込みは1ページ$2[ms]$である)。

もしコマンドの中にターミネータがあった場合は登録処理をその場で切り上げ、ターミネータまでの処理をバッチとする。また、halt命令を受信した場合、書き込み処理が途中で終了してしまうため、その場合はFlashメモリの全消去をするべきである。残りのページ数が0になるか、ターミネータを受信した時点で書き込み処理は終了し、バッチの末尾にターミネータを付加、最後に空白リストの更新を行う。



Deguchi Lab. 平成20年3月5日