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

相关推荐
筱源源15 分钟前
Kafka-linux环境部署
linux·kafka
Mephisto.java33 分钟前
【大数据学习 | kafka高级部分】kafka中的选举机制
大数据·学习·kafka
算法与编程之美1 小时前
文件的写入与读取
linux·运维·服务器
南宫生1 小时前
贪心算法习题其三【力扣】【算法学习day.20】
java·数据结构·学习·算法·leetcode·贪心算法
xianwu5431 小时前
反向代理模块
linux·开发语言·网络·git
Amelio_Ming1 小时前
Permissions 0755 for ‘/etc/ssh/ssh_host_rsa_key‘ are too open.问题解决
linux·运维·ssh
武子康2 小时前
大数据-212 数据挖掘 机器学习理论 - 无监督学习算法 KMeans 基本原理 簇内误差平方和
大数据·人工智能·学习·算法·机器学习·数据挖掘
Ven%2 小时前
centos查看硬盘资源使用情况命令大全
linux·运维·centos
使者大牙2 小时前
【大语言模型学习笔记】第一篇:LLM大规模语言模型介绍
笔记·学习·语言模型
天行健PLUS3 小时前
【经验分享】六西格玛管理培训适合哪些人参加?
经验分享