1

我正在尝试为一个宠物项目修改 OpenNFM 固件。我使用的板是 Olimex LPC H3131。在 Windows 中,我使用 IAR 嵌入式工作台编译二进制文件并使用 Teraterm(串行端口)将二进制文件发送(作为二进制文件发送)到开发板。这会将开发板设置为 USB 设备。如何将二进制文件推送到 Linux 中的设备?

我用过minicom。我收到类似于 Teraterm 的“LPC31xx 准备好接收纯图像”消息。然后我使用 'CTRL+A' 后跟 'S' 发送文件。我在下一个屏幕中选择“ASCII”,然后输入二进制文件的路径。我在 minicom 中收到成功传输和“下载完成”消息。但之后什么也没有发生。我什至没有得到使用 Teraterm 时得到的输出(用于调试的日志注释),该板也没有显示为 USB 存储设备。

4

1 回答 1

1

为了能够以 ASCII 形式发送带有 minicom 的二进制文件,您需要先对其进行编码。问题是你需要在接收端再次解码,所以我猜你不能遵循这条路线。

幸运的是,您可以自定义 minicom 以添加新的传输协议。见这里: https ://gist.github.com/cstrahan/5796653

如您所见,该过程非常简单:

1)例如,将脚本保存在系统中的某个位置/usr/bin/bin-xfer.sh

2)给它正确的权限:$sudo chmod +x bin-xfer.sh

3) 运行 minicom 的 setup:$sudo minicom -s并在菜单上选择文件传输协议

4)添加一个新的条目点击J,给一个名字喜欢binary并按回车移动到下一个菜单,然后添加命令行/usr/bin/bin-xfer.sh -o %l并根据链接设置其他选项

5) 保存配置并退出设置菜单

然后从 minicom 你可以调用你刚刚添加的新菜单CTRL+ A+S

编辑:我自己在 Ubuntu 19.04 上测试了这个解决方案后,我意识到脚本不起作用(因为它使用了不支持的不同函数定义)。但这很容易修复,只需将第 5 行从 更改function exists {exists() {. $sudo apt-get install pv如果您想监控传输进度,安装 pv 也是一个好主意。

作为旁注,您不需要使用 minicom,您可以将此脚本用作独立工具,但要做到这一点,您需要使用 stty 设置端口,例如:

$ stty -F /dev/ttyUSB0 115200 raw cs8 -ixoff -cstopb -parenb

然后运行脚本:

$ bin-xfer.sh -i bin_file_to_send -o /dev/ttyUSB0

我还测试了这个python 脚本,它也可以工作,并且可以以类似的方式添加到 minicom 的菜单中。

于 2019-06-10T17:34:20.193 回答