カスタムボードに組み込みLinuxがあり、そのシリアルポートを介してファイルを送受信したいと思います。
このデバイスと通信する唯一の方法はシリアル経由であり、デバイスはこのシリアルポートでコンソールを提供します。
このボードにはKermit
もありませんbusybox rx
またはlrzsz
。
-リモートにファイルを送信しています
this thread に従って、ボードにファイルを送信できました。
Host side Remote side
cat file | base64 > file_b64
cat > file_b64
minicom's ctrlA-S => send 'file_b64'
cat file_b64 | base64 --decode > file
-リモートからファイルを取得しています
次に、リモートシステムからファイルを取得します。
Minicomにはファイルを受信するためのツールがありますが、シリアルポートのコンソールはminicomを使用してリモート側でコマンドを発行しているだけなので、その方法を見つけることができません。
ホスト側でKermitを使用してみましたが、リモート側にもKermitが必要なようです。
編集:
また、送信方法を逆にしようとしましたが、ホスト側のシリアルポートから何も受信しないため、成功しませんでした。
Host side Remote side
cat file | base64 > file_b64
(sleep 10; cat file_b64 > /dev/ttyS0) &
minicom's ctrlA-X => exit minicom
cat /dev/ttyUSB0 > file_b64
Minicomの受信ツールを使用できないため、xmodem
、ymodem
、zmodem
およびKermit
転送のみがサポートされ、ASCIIはサポートされません。
コンソールにコマンドを入力せずにリモートからファイルを取得する方法はありますか?
最後に、私が受信側で間違ったコマンドを発行していることがわかりました。
受信コマンドは:cat < /dev/ttyUSB0 > file_b64
リモートから受信するには:
Host side | Remote side
|
| #Encode to base64
| cat file | base64 > file_b64
|
| #Send after timeout
| (sleep 10; cat file_b64 > /dev/ttyS0) &
|
#############################################################
### Exit minicom but keep configuration (ctrlA-Z, then Q) ###
#############################################################
|
#Receive file |
cat < /dev/ttyUSB0 > file_b64 |
|
#Decode file |
cat file_b64 | base64 -di > file |
上記の投稿を要約すると、次のようなものが見つかりました:
ターゲットで受信を開始します。
cat | base64 -d > filetotarget.bin
Ctrl-A + Qでminicomを終了し、ホストマシンで実行します。
cat filetotarget.bin | base64 > /dev/ttyUSB0
Minicomに戻り、Ctrl-Dを押して受信プロセスを終了します。
ターゲットで遅延送信を開始します。
sleep 10 ; cat filefromtarget.bin | base64
Ctrl-A + Qでminicomを終了します。次に、ホストで受信を開始します。
cat < /dev/ttyUSB0 | base64 -di > filefromtarget.bin