1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在嵌入式开发中,涉及交叉编译:在 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 注意:如果 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) 最后,重启 NFS 服务,在 Ubuntu 上执行以下命令: sudo /etc/init.d/nfs-kernel-server restart 可以在 Ubuntu 上通过 NFS 挂载自己,验证一下 NFS 可用: sudo mount -t nfs -o nolock,vers=3 127.0.0.1:/home/book /mntls /mnt 再次重申:NFS 是一种网络服务,开发板可以通过网线连接 Ubuntu 来使用 NFS 服务;甚至也可以通过USB OTG 线连接 Ubuntu,通过虚拟的 USB 网卡使用 NFS 服务。 8.4.2 Ubuntu 安装 TFTP 服务 注意:使用 VMware NAT 网络或 Docker 时,不需要在 Ubuntu 中安装 TFTP 服务,而是在 Windows 运行tftpd64 程序。 在 Ubuntu 中执行以下命令安装 TFTP 服务: book@100ask:~$ sudo apt-get install tftp-hpa tftpd-hpa 然后,创建 TFTP 服务器工作目录,并打开 TFTP 服务配置文件,如下: book@100ask:~$ mkdir -p /home/book/tftpbootbook@100ask:~$ sudo chmod 777 /home/book/tftpbootbook@100ask:~$ sudo vim /etc/default/tftpd-hpa 在配置文件/etc/default/tftpd-hpa 中,添加以下字段: TFTP_DIRECTORY="/home/book/tftpboot"TFTP_OPTIONS="-l -c -s" 最后,重启 TFTP 服务: book@100ask:~$ sudo service tftpd-hpa restart 查看 tftp 服务是否在运行,运行如下命令,即可查看是否在后台运行。 book@100ask:~$ ps –aux | grep “tftp” 8.4.3 在 Windows 安装 TFTP 服务 Windows 上的 TFTP 服务由一个应用程序 tftpd64 提供,下载后双击运行,再做些设置即可。tftpd64 的前身是 tftpd32,它是 32 位的程序。对于 64 位电脑,请使用 tftpd64。 tftpd64 的官网为:http://tftpd32.jounin.net/,建议下载“portable edition”版本,无需安装直接运行。官网不好打开的话,直接百度搜“tftpd64”即可,它是免费软件。 把“网盘配套资料 |