PC 与 嵌入式板 传输文件的方式汇总 / SSH、NFS、TFTP,USB,串口

编辑整理 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,最后在弹出的文件框保存文件。

相关推荐
好望角雾眠3 分钟前
第一阶段C#基础-10:集合(Arraylist,list,Dictionary等)
笔记·学习·c#
艾伦~耶格尔7 分钟前
【集合框架LinkedList底层添加元素机制】
java·开发语言·学习·面试
星仔编程18 分钟前
python学习DAY46打卡
学习
Fireworkitte42 分钟前
Ubuntu、CentOS、AlmaLinux 9.5的 rc.local实现 开机启动
linux·ubuntu·centos
大霞上仙1 小时前
实现自学习系统,输入excel文件,能学习后进行相应回答
python·学习·excel
sword devil9001 小时前
ubuntu常见问题汇总
linux·ubuntu
ac.char1 小时前
在CentOS系统中查询已删除但仍占用磁盘空间的文件
linux·运维·centos
yatingliu20193 小时前
HiveQL | 个人学习笔记
hive·笔记·sql·学习
武当豆豆3 小时前
C++编程学习(第25天)
开发语言·c++·学习
风和日丽 随波逐流3 小时前
java17学习笔记-Deprecate the Applet API for Removal
笔记·学习