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

相关推荐
不灭锦鲤29 分钟前
ssrf学习(ctfhub靶场)
网络·学习·安全
alfiy33 分钟前
Elasticsearch学习笔记(五)Elastic stack安全配置二
笔记·学习·elasticsearch
权^38 分钟前
MySQL--聚合查询、联合查询、子查询、合并查询(上万字超详解!!!)
大数据·数据库·学习·mysql
冷静 包容1 小时前
C语言学习之 没有重复项数字的全排列
c语言·开发语言·学习
K3njuan1 小时前
《数据结构》学习系列
学习
玉树临风江流儿1 小时前
Linux驱动开发(速记版)--设备模型
linux·驱动开发
结衣结衣.1 小时前
C++ 类和对象的初步介绍
java·开发语言·数据结构·c++·笔记·学习·算法
杰哥在此1 小时前
Python知识点:如何使用Multiprocessing进行并行任务管理
linux·开发语言·python·面试·编程
枫叶丹43 小时前
【在Linux世界中追寻伟大的One Piece】进程信号
linux·运维·服务器
刻词梨木3 小时前
ubuntu中挂载点内存不足,分配不合理后使用软链接的注意事项
linux·运维·ubuntu