编辑整理 by Staok。
本文部分内容摘自 "100ask imx6ull" 开发板的配套资料(如 百问网的《嵌入式Linux应用开发完全手册》,在 百问网 imx6ull pro 开发板 页面 中的《2.1 100ASK_IMX6ULL_PRO:开发板资料》或《2.2 全系列Linux教程:在线视频与配套资料》里面可以下载到),还有参考 菜鸟教程、C语言中文网、红联的等等等等,比较广泛,侵删。进行了精髓提取,方便日后查阅。过于基础的内容不会在此提及。如有错误恭谢指出!
注:在 Github 上的原版文章日后可能会更新,在其它位置发的不会跟进。文章的 Gitee 仓库地址,Gitee 访问更流畅。
PC 与 嵌入式板 传输文件的方式汇总
网络传输:ETH/WiFi
通过网络的方式来进行 登陆/操作/传递文件等 为最常用的。SSH、NFS、tftp
SSH
使用 MobaXterm 或 FileZilla 等等,通过 SSH 连接 Linux 板,进行文件传输(可以使用拖拽上传)。比较基础,具体方法略。
NFS
NFS 将服务端的文件系统目录树映射到客户端,而在客户端访问该目录树与访问本地文件系统没有任何差别。
在 Ubuntu 中安装、配置 NFS
-
确保安装:
sudo apt-get install nfs-kernel-server
。 -
设定目录,例如允许开发板通过 NFS 访问 Ubuntu 的
/home/book
目录,则在/etc/exports
文件中添加以下内容:/home/book/ *(rw,nohide,insecure,no_subtree_check,async,no_root_squash)
-
重启 NFS 服务:
sudo service nfs-kernel-server restart
。 -
可以在 Ubuntu 上通过 NFS 挂载自己,验证一下 NFS 可用:
sudo mount -t nfs -o nolock,vers=3 127.0.0.1:/home/book /mnt ls /mnt
NFS 使用
如果你使用的是 VMware NAT 方式,假设 Windows IP 为192.168.1.100,在嵌入式 Linux 板子上执行以下命令(注意:必须指定 port 为2049、 mountport 为9999):
mount -t nfs -o nolock,vers=3,port=2049,mountport=9999 192.168.1.100:/home/book/nfs_rootfs /mnt
如果你使用的是 VMware 桥接方式,假设 Ubuntu IP 为192.168.1.100,确保 嵌入式 Linux 板子 能 ping 通 ubuntu 后,在嵌入式 Linux 板子上执行以下命令:
mount -t nfs -o nolock,vers=3 192.168.1.100:/home/book/nfs_rootfs /mnt
mount 成功之后 , 嵌入式 Linux 板子在 /mnt 目录下读写文件时, 实际上访问的就是 Ubuntu 中的 /home/book/nfs_rootfs 目录,可以在 Ubuntu 上把文件放到 /home/book/nfs_rootfs 目录中,在开发板上可以从 /mnt 目录中访问该文件。所以嵌入式 Linux 板子和 Ubuntu 之间通过 NFS 可以很方便地共享文件。
tftp
-
在 Ubuntu 启动 TFTP 服务,开发板通过 tftp 命令和 Ubuntu 互传文件。
-
在 Windows 启动 TFTP 服务,开发板通过 tftp 命令和 Windows 互传文件。
Ubuntu 安装 TFTP 服务
-
确保·安装:
sudo apt-get install tftp-hpa tftpd-hpa
。 -
创建 TFTP 服务器工作目录,并打开 TFTP 服务配置文件,如下:
mkdir -p /home/book/tftpboot sudo chmod 777 /home/book/tftpboot sudo vim /etc/default/tftpd-hpa
-
在配置文件
/etc/default/tftpd-hpa
中,添加以下字段:TFTP_DIRECTORY="/home/book/tftpboot" TFTP_OPTIONS="-l -c -s"
-
重启 TFTP 服务:
sudo service tftpd-hpa restart
。 -
查看 TFTP 服务是否在运行:
ps -aux | grep "tftp"
。
在 Windows 安装 TFTP 服务 可用时再看(百问网的《嵌入式Linux应用开发完全手册》的 7.4.3 在Windows安装TFTP服务
一节、7.6.2 开发板通过tftp传输Ubuntu文件
一节)。
USB 传输
最 低效 的方法 U 盘拷贝。
NXP 公司给 IMX6ULL 提供了烧写工具: mfgtools。或者对于 imx6ull 使用 100ask 开发的 100ask_imx6ull_flashing_tool
(详看 百问网的《嵌入式Linux应用开发完全手册》)。
串口传输:rz/sz 命令
在 "工地" 现场上 网口、USB 口 统统没有,那我们还可以使用串口。
这里使用的上位机是 MobaXterm,要先设置 MobaXterm 取消 "右击粘贴",这样鼠标右击的时候才会出现菜单。
注意:串口传输非常非常的慢,KB 级别的文件还可以,MB 级别的传输十分漫长(十几分钟到一个小时),优先用网络吧。
注意: rz/sz 命令不稳定,不可靠,在没有其他办法的情况下再用它。 rz/sz 命令传输速率太小,适合传输小文件,不适合大文件。
上位机往板子发:rz
在 MobaXterm 里面通过串口连接并登录 嵌入式 Linux 板子,然后输入 rz
命令,此时终端会提示等待接收,此时在 MobaXterm 里面鼠标右键会弹出一个选择框,点击 Send file using Z-modem
来选择要传输文件。
板子往上位机发:sz
嵌入式 Linux 板子启动进入 Linux 后,在串口中执行命令 sz <要发送的文件>
,然后按住 shift 键的同时,用鼠标右键点击串口界面,选择 Receive file using Z-modem
,最后在弹出的文件框保存文件。