首页 > 应用开发 > IT综合 > PC 和开发板之间传输文件
8.1 传输文件的多种方法
在嵌入式开发中,涉及交叉编译:在 PC 上编译,在开发板上运行。所以就涉及 PC 和开发板之间的文件
传输,方法有多种:网络传输、串口传输、USB 传输,当然,还有最笨的方法:U 盘拷贝。
一般的日常开发流程为:
a. 在 Windows 上阅读修改代码,然后通过 FileZilla 把代码传到 VMWare 中的 Ubuntu;
b. 在 Ubuntu 上编译程序;
c. 把程序下载到开发板上,运行验证,
d. 在 Windows 下通过串口操作开发板。
所以在 Windows、Ubuntu、开发板三者间,两两之间都存在文件的传输。
当然,有人不喜欢 Windows,PC 只用纯 Linux,这些高手已经熟练掌握各种 Linux 命令,不再存在文件传输的障碍。
总之,各种需求都存在,比如某些笔记本没有网口,那可以使用 USB 线连接开发板,开发板模拟出网卡;在工地上网口、USB 口统统没有,那我们还可以使用串口。
我们会一一列举,作为初学者,不需要验证全部章节,选择合适你的即可。
8.2 在 Windows 上通过串口和开发板传输文件
如果只是偶尔传输小文件,可以直接使用串口。
注意:在开发过程中,使用 NFS 是最方便的。
8.2.1 用 MobaXterm 打开串口、启动开发板
这不用介绍了吧。
8.2.2 使用 rz 命令通过串口下载 Windows 文件到开发板上
可以在开发板上使用 rz 命令,将 PC 上的文件传输到开发板。
请参考《5.3.2 使用rz命令通过串口下载Windows文件到开发板上》
8.2.3 使用 sz 命令让开发板向 PC 发送文件
可以在开发板上使用 sz 命令,将开发板的文件上传给PC。
请参考《5.3.3 使用 sz 命令通过串口把开发板文件上传给 PC》。
8.3 通过 USB 给开发板传文件
尚未实现。
8.4 安装网络服务
在嵌入式开发中,网络服务带来了很多便利,特别是 Ubuntu 上的 NFS 服务。使用 NFS 服务,开发板可以挂载 Ubuntu 上的某个目录,假设开发板把 Ubuntu 上的/home/book 目录挂载到自己的/mnt 目录,那么在开发过程中,可以如此操作:
a. 在 Ubuntu 上的/home/book/abc 目录中编译程序
b. 开发板可以直接运行/mnt/abc 下的程序
在 Ubuntu 上编译程序,开发板可以立刻执行程序,免去了上传、下载等等繁琐的操作。
Windows 推出了 WSL 子系统(Windows Subsystem for Linux),这确实是个很牛的产品。可惜它不支持NFS 服务,否则我们早就舍弃 Ubuntu 而采用 WSL 了。
当然,网络服务不仅仅有 NFS,还有 TFTP、SSH 等服务。如果只是传输文件,可以使用 TFTP、SSH 等服务,比如:
a. 在 Ubuntu 启动 TFTP 服务,开发板通过 tftp 命令和 Ubuntu 互传文件;
b. 在 Windows 启动 TFTP 服务,开发板通过 tftp 命令和 Windows 互传文件;
c. 在开发板上启动 SSH 服务,Windows 通过 FileZilla 登录开发板,互传文件。
上述场景各有其存在的道理:
如果开发板没安装 SSH 服务,那么就可以通过 tftp 命令使用 Ubuntu 或 Windows 的 TFTP 服务。
如果开发板安装了 SSH 服务,那么使用 FileZilla 传输文件时是完全的 GUI 操作,非常方便。
开发、调试过程使用 Ubuntu 的 NFS 服务,这是最方便的。
NFS、TFTP、SSH 等服务,都是基于网络的。开发板可以使用网线和电脑相连,也可以使用 USB OTG 线与电脑相连,后者通过虚拟的 USB 网卡使用网络。
使用网线,还是使用 USB OTG 线?有网卡、有网线就用网线,没有再选择 USB OTG 线。
下面章节讲解怎么安装、配置各种服务,作为初学者建议先使用 NFS,其他的先不管。
8.4.1 在 Ubuntu 中安装、配置 NFS
如果你使用的是我们提供的 Ubuntu,那么已经安装好了 NFS 服务。查看一下/etc/export 的内容,就知道开发板可以挂载哪一个目录。如果该文件中没有指定目录,请继续往下看。
如果你的 Ubuntu 未安装 NFS 服务,那么在确保 Ubuntu 可以上网的前提下,执行以下命令:
sudo apt-get install nfs-kernel-server
1
注意:如果 Ubuntu 无法上网,使用 VMware 桥接网络时请参考《1.3 VMware 桥接网络设置》,使用 VMware NAT 网络或 Docker 时请参考《第四章 使用 NAT 配置 Ubuntu 网络》和《第五章 安装软件及开发示例》。
然后,还得修改/etc/exports,添加类似以下的内容,下面的例子里允许开发板通过 NFS 访问 Ubuntu的/home/book 目录:
/home/book *(rw,nohide,insecure,no_subtree_check,async,no_root_squash)
1
最后,重启 NFS 服务,在 Ubuntu 上执行以下命令:
sudo /etc/init.d/nfs-kernel-server restart
1
可以在 Ubuntu 上通过 NFS 挂载自己,验证一下 NFS 可用:
sudo mount -t nfs -o nolock,vers=3 127.0.0.1:/home/book /mntls /mnt
1
再次重申:NFS 是一种网络服务,开发板可以通过网线连接 Ubuntu 来使用 NFS 服务;甚至也可以通过USB OTG 线连接 Ubuntu,通过虚拟的 USB 网卡使用 NFS 服务。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69997197/viewspace-2764988/ ,如需转载,请注明出处,否则将追究法律责任。