Olimex CS-E9302日記 - lrzsz を使ってボードにhello2 を転送する

ボードに 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ディスクへの転送だけであっても、プログラムのデバッグのためには随分ありがたいと思う。