如何通过串行传输二进制文件?

How to transfer a binary file through serial?

我带来了一个新硬件(通过 USB 连接为 /dev/ttyUSB0)。 我需要通过串行传输二进制 os.bin 文件。硬件有一个内置的 UART 驱动程序。

我下载了 putty,但在选项中看不到任何文件传输方法。

但我确实在 Teraterm 中看到了文件传输选项,但很多: kermit、X、Y 和 ZMODEM、Quick Van 和 B-Plus。

现在,我不知道上面提到的任何协议。

我希望新硬件只有 UART 驱动程序。 (在手册中提到的指定波特率 115200 8N1)

现在,我如何将 os.bin 转移到 HW? & 如果我使用Teraterm,我应该在Teraterm中选择哪个选项?

Teraterm 中的文件->发送文件...下有一个选项可用于发送二进制文件。

如果您有二进制文件,只需选中发送文件 Window 选项部分中的方框 "binary",然后按 "Open" 选择您的特定文件。

这里有一些关于 sendfile 的信息:https://ttssh2.osdn.jp/manual/en/macro/command/sendfile.html

您可以使用 putty 包中的 plink

您还可以使用 slattach 实用程序与另一台设备建立 p2p 网络连接。

使用 Teraterm File -> Send file... 命令将发送文件的内容,但您仍然需要 运行 在远程机器上接收它(否则它只是将文件的内容转储到命令行或远程机器的任何其他命令处理器 运行).

虽然我确信有更好更复杂的方法可以做到这一点,但我通过在远程机器上打开一个编辑器(我使用 vi 但 ymmv)发送了一个文本文件,然后执行 Teraterm File -> Send file... 命令,因此文件的内容被转储到编辑器中。

Kermit、Xmodem 等的原理相同,因为要使其中任何一个正常工作,您需要 运行 在启动发送之前成为接收器(例如 Kermit)上的适当程序teraterm.

最简单的方法就是用sx和rx,busybox有rx

ex: 如果你有像 putty 这样的连接目标到 ttyUSB0

在主机上:
$ sx filename < /dev/ttyUSB0 > /dev/ttyUSB0

目标(腻子):
# rx filename