ボードに lrzsz をインストールしたので使ってみる。
まず開発PCで hello2 プログラムを作成する。
$ vi hello2.c #include <stdio.h> int main(){ prntf("hello2\n"); return 0; } $ arm-linux-gcc -o hello2 hello2.c
ボードを起動してKermitで接続する。
← ボードの電源入れる $ kermit C-Kermit> c Please press Enter to activate this console. ← リターンを押す ~ #
ファイルの転送の実行
~ # cd bin /bin # rx -b hello2 ← 受信コマンド rx: ready to receive hello2 ← 受信待ちになっている
ここで別のX端末から送信コマンドを発行する
↓ 別のX端末 $ sx hello2 < /dev/ttyS0 > /dev/ttyS0 ← hello2 の送信 Sending hello2, 36 blocks: Give your local XMODEM receive command now. Byte Sent: 4736 BPS:300 Transfer complete ← 転送終了
もとのボードに接続してる端末をみると転送が終了している。
/bin # /bin # ls -al hello2 -rw------ 1 root root 4736 Jan 1 00:07 hello2 /bin # chmod a+x hello2 /bin # hello2 hello2
うまく転送できている。転送時間は数秒である。
また、X端末を2画面使ったが、Kermitエスケープすれば1画面で送信できる。
~ # cd bin /bin # rx -b hello2 rx: ready to receive hello2 Ctrl+\c ← Kermitのエスケープシーケンスを入力。 ... C-Kermit> !sx hello2 < /dev/ttyS0 > /dev/ttyS0 ← hello2 の送信 ...Byte Sent: 4736 BPS 2186 Transfer complete C-Kermit> c ← 再接続 /bin # ls -al hello2 -rw------ 1 root root 4736 Jan 1 00:07 hello2 /bin # chmod a+x hello2 /bin # hello2 hello2
としてもよい。Kermitエスケープする方は、手順がややこしいが転送失敗が少ないような気がする。
以上でファイル転送はうまくいくことを確認した。しかし、ひとつ注意がある。この転送先の /bin はRAMディスクなので、ボードをリセットすると消えてしまう。
リセットして再接続
~ # ls -al /bin/hello2 ls: /bin/hello2: No such file or directory ← 消えている
ということで、次はボードのLinux上でRAMディスクをFLASHへ書き込む方法が欲しくなる。が、これには、もう少し工夫がいる。
しかし、RAMディスクへの転送だけであっても、プログラムのデバッグのためには随分ありがたいと思う。