Ark*_*aik 9 file-transfer serial-port serial-console minicom uart
我在定制板上有一个嵌入式 Linux,我想通过其串行端口发送和接收文件。
与该设备进行通信的唯一方式是通过串行,并且该设备在该串行端口上提供了一个控制台。
这个板子kermit
既没有busybox rx
也没有lrzsz
。
- 发送文件到远程
我能够按照此线程将文件发送到董事会。
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
Run Code Online (Sandbox Code Playgroud)
- 从远程获取文件
现在我想从远程系统检索文件。
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
Run Code Online (Sandbox Code Playgroud)
无法使用Minicom的接收工具,因为它仅支持xmodem
,ymodem
,zmodem
和kermit
tranfers而不是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 |
Run Code Online (Sandbox Code Playgroud)
总结上面的帖子,我发现了这样的东西:
开始接收目标:
cat | base64 -d > filetotarget.bin
Run Code Online (Sandbox Code Playgroud)
使用Ctrl-A + Q退出 minicom,然后在主机上运行:
cat filetotarget.bin | base64 > /dev/ttyUSB0
Run Code Online (Sandbox Code Playgroud)
返回 minicom 并按Ctrl-D完成接收过程。
在目标上开始延迟发送:
sleep 10 ; cat filefromtarget.bin | base64
Run Code Online (Sandbox Code Playgroud)
使用Ctrl-A + Q退出 minicom 。然后开始在主机上接收:
cat < /dev/ttyUSB0 | base64 -di > filefromtarget.bin
Run Code Online (Sandbox Code Playgroud)