内蔵された機能によって、シリアルインターフェイス経由で ホストコンピュータ(例えばIBM PCや互換機) からEyeBotのRAMまたはFlash-ROMへユーザープログラムの転送を行います。 これはEyeBotハードウェアに提供されている多数のシステムルーチンのひとつで、ユーザーが独自のアプリケーションを設計して実行することを可能にしています。
転送ルーチンを使うためには、ユーザーがホストパソコン上に端末プログラムをインストールし、EyeBotのシリアルプロトコルと一致させる必要があります。 端末プログラムはS-Record形式ファイルをダウンロードルーチン制御の下でEyeBotに転送します。
コマンド系列(下記)はEyebotのキーを順番に押すことによって表示され、ダウンロード用パラメータを指定する。このキー操作がダウンロードルーチンで使用する唯一のユーザー入力方法になります。
stty speed 57600 crtscts < /dev/ttyS1
現在の設定は下記のように確認することができます。(COM2の場合)
stty -a < /dev/ttyS1
Unixのデータ転送(COM2の場合)は下記のように極めて簡単です。
cat myfile.hex > /dev/ttyS1
ダウンロードには提供されているシェルスクリプトを使うこともできます。転送速度57600、フロー制御 RTS/CTSでCOM2ポートを使うことを仮定すると:
dl myfile.hex
転送中、ダウンロードプログラムはロード中のプログラム名と受信済みのバイト数で転送経過を示します。 最後に正常終了画面を表示し、ロードされたプログラムの実行を促します。
ダウンロードプログラムは無効な転送事象に遭遇したときEyeBotオペレーティングシステムに対してリターンコードを返します。ダウンロードはエラーが起こった時点で中断されます。転送中にエラーが起こった場合には、いかなるユーザープログラムも実行できません。エラーの原因を正して再度ダウンロードをしなければなりません。簡潔なエラーメッセージがLCD上に表示されます。
BIOSに使用されていないEyeBotの標RAMの領域は16進表示で20000番地から40000番地で、ユーザープログラム用に128KBの利用可能な空間が用意されています。RAMは最大で1MBまで拡張できます。
最大通信速度はは57600です。115200を試みましたが、受信した文字ごとに回避不能な構造エラーを引き起こしました。
このバージョンのダウンロードルーチンはRTS/CTSフロー制御を使用しているときのみ経過報告します。しかし、この機能を使用すると転送時間を顕著に増加させます。 したがって、「経過報告はあるが転送が遅くなる方法」あるいは「経過報告はないが転送が速くなる方法」が選択肢としてあることになります。
この制限は、ダウンロードルーチンがポーリングを行い、 割込みによる入出力ではないことによります。 ポーリング処理中に送信側を停止させずにLCDに書き込もうとすると、データ超過状況エラーを引き起こします。すなわち、一つまたはそれ以上の文字が失われます。RTS/CTSフロー制御を使用するときには、EyeBot上のダウンロードルーチンはディスプレイに書き込こまれている間にパソコンがデータを送るのを防ぐためにClear To Send(CTS)信号をオフにします。
SerSetup: Serial Speed: * 9600 Handshake: RTS/CTS + - Nxt END |
Ready to
download at
57600, RTS/CTS:
Downloading:
END
|
Ready to
download at
57600, RTS/CTS:
Downloading:
myprog.hex
Bytes:
80260
Ld Run Rom END
|
User Prog.: Program loaded: myprog.hex Ld Run Rom END |
---Flashdrive---
Program in RAM:
myprog.hex
Programs in ROM:
NONE.hex *
NONE.hex
NONE.hex
Sav Ld Nxt END
|
EyeBotの起動中にどれかのキーが押された場合には、ユーザープログラムの自動実行機能は無効になります。
Thomas Bräunl, Barbara Linn, and Klaus Schmitt, 1997