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

相关推荐
JunLan~1 小时前
Rocky Linux 系统安装/部署 Docker
linux·docker·容器
方竞2 小时前
Linux空口抓包方法
linux·空口抓包
Red Red3 小时前
网安基础知识|IDS入侵检测系统|IPS入侵防御系统|堡垒机|VPN|EDR|CC防御|云安全-VDC/VPC|安全服务
网络·笔记·学习·安全·web安全
海岛日记3 小时前
centos一键卸载docker脚本
linux·docker·centos
AttackingLin3 小时前
2024强网杯--babyheap house of apple2解法
linux·开发语言·python
Natural_yz4 小时前
大数据学习17之Spark-Core
大数据·学习·spark
qq_172805594 小时前
RUST学习教程-安装教程
开发语言·学习·rust·安装
学Linux的语莫5 小时前
Ansible使用简介和基础使用
linux·运维·服务器·nginx·云计算·ansible
一只小小汤圆5 小时前
opencascade源码学习之BRepOffsetAPI包 -BRepOffsetAPI_DraftAngle
c++·学习·opencascade