我正在尝试通过串行连接将固件文件从树莓派上传到需要 YMODEM 协议的设备。经过大量挖掘后,我不断发现该sz --ymodem [file]
命令是执行此操作的工具。我已经成功地使用以下命令与设备进行通信这例如,但我没有运气sz
。
我已经阅读了sz
文档,它给我留下了一个问题。如何确定是否正在发送到设备?它通过 USB 插入并具有端口/dev/ttyACM0
。其他示例讨论了默认情况下从远程主机发送到本地主机的情况sz
,但这与任何解释一样深入。
该设备有一个命令告诉它预期文件传输;我相信这取代了rz
,但设备文档说它“准备设备通过超级终端进行 YMODEM 传输”。我已经通过超级终端和专有程序成功向其发送了文件,但我需要能够在 Linux 命令行上执行此操作。
我确信这是一个缺乏经验的情况,而且我遗漏了一些明显的东西,但是我如何从头到尾完全执行此文件传输/我做错了什么?
答案1
rz
可以sz
追溯到人们习惯于拨入连接到大型计算机系统的调制解调器并登录的时代。要发回文件,可以使用几种协议之一:kermit、xmodem、ymodem 和 zmodem。
发送文件的通道是实际的登录会话。因此,我们将在主机上启动传输程序,然后它将开始其协议握手。然后在终端程序上,您将激活传输协议选项。
希望终端程序和主机能够在协议中建立自己的位置并传输文件。
Zmodem实际上定义了一个标志序列,这样当主机开始传输时,支持自动启动的终端程序就会开始传输。
TELIX 是支持此功能的流行终端程序。
Hyperterm 用于支持 PC 上的多种传输协议。如果您通过串行端口连接到 Pi,那么这可能就是您正在寻找的。
您需要做的是将自己想象为在树莓派上,并在树莓派本身上运行终端程序来与该串行端口通信。
根据我的经验,在 Linux 上运行的更好的串行终端程序是minicom
,它确实支持 ymodem。
apt-get install minicom
运行minicom
并设置正确的 /dev/ttySxxx (显然是 /dev/ttyACM0)
sudo minicom -s
并按照菜单操作
一旦连接完毕,就可以调制解调器传输文件了。键入 control-A、“S”,然后使用菜单选项选择 ymodem 和要发送的文件
已经有一段时间了,但尝试一下
答案2
我想如果你sudo minicom -s
这样做的话,你会进入设置菜单。如果端口类似于 FTDI rs232、rs422 USB 转串行电缆,请确保将端口设置为 /dev/ttyUSB。如果找不到适配器,它甚至无法打开。另外,要发送文件,您需要在一台计算机上发送它,并在另一台计算机上选择快速接收......尝试使用适用于 Android 的 FTDI UART 终端。它更容易一些并且有快捷按钮。