PC与开发板文件互传


在嵌入式开发中,一般的日常开发流程为:

  1. 在 Windows 上阅读修改代码,然后通过 FileZilla 把代码传到 VMWare 中的 Ubuntu;
  2. 在 Ubuntu 上编译程序生成可执行文件;
  3. 把程序下载到开发板上,运行验证;
  4. 在 Windows 下通过串口操作开发板。

所以在 Windows、Ubuntu、开发板三者间,存在两两之间的文件传输。

在PC 和开发板之间进行文件传输,方法有多种:网络传输、串口传输、USB 传输,当然,还有最笨的方法:U 盘拷贝。各种方法都有其实际需求,比如某些笔记本没有网口,可以使用 USB 线连接开发板,开发板模拟出网卡;在工地上网口、USB 口统统没有,可以使用串口。

环境

  • PC:x86架构win11系统
  • 开发板:ARM架构Linux系统
    在这里插入图片描述
    由于开发板架构与PC架构不同,所以需要交叉编译,即

使用串口

有些公司内部不能搭建局域网,或者开发板没有网口,可以选择使用lrzsz。

远程文件传输的工具有很多,例如rz、sz、scp、sftp、ftp等。如果环境服务器需要通过跳板机(relay)访问,使用rz、sz传输更为方便。

在SecureCRT下的传输协议有ASCII、Xmodem、Ymodem、Zmodem 4种:

ASCII:这是最快的传输协议,但只能传送文本文件
Xmodem:这种古老的传输协议速度较慢,但由于使用了CRC错误侦测方法,传输的准确率可高达99.6%
Ymodem:这是Xmodem的改良版,使用了1024位区段传送,速度比Xmodem要快。
Zmodem:Zmodem采用了串流式(streaming)传输方式,传输速度较快,而且还具有自动改变区段大小和断点续传、快速错误侦测等功能,是目前最流行的文件传输协议.

lrzsz

rz,sz是Linux/Unix同Windows进行ZModem文件传输的命令行。rz 可以很方便的从客户端传文件到服务器,sz也可以很方便的从服务器传文件到客户端,就算中间隔着跳板机也不影响。

注意:rz命令不稳定不可靠,传输速率太小,适合传输小文件,不适合大文件,推荐nfs挂载的方式进行文件的传输,在没有其他办法的情况下再用它。
将lrzsz 安装到 ARM-linux 嵌入式板子上需要移植

1.下载源码

最新版官方下载地址

2.复制到Ubuntu主机在Linux解压

sudo tar -zxvf lrzsz-0.12.20.tar.gz

3.安装并使用交叉编译工具链

直接在Ubuntu系统下使用apt包管理工具安装。在编译 lrzsz 的时候只需要使用arm-linux-gnueabihf-gcc编译器。sudo apt install gcc-arm-linux-gnueabihf

4.交叉编译

添加交叉编译工具链的路径到环境变量export PATH=$PATH:xxxxxx为交叉编译工具链的路径)

配置CFLAGS=-O2 CC=arm-linux-gnueabihf-gcc ./configure --cache-file=arm_cache_file--prefix=/usr/local/arm-linux-gnueabihf-gcc为交叉编译工具链,arm_cache_file为生成可执行程序文件夹,/usr/local为安装位置)

检查安装lslrzsz-0.12.20下多了arm_cache_file文件夹

编译make -j4

检查cd src/ls可以看到生成的lre和lsz两个文件

5.文件拷贝

通过网络、U盘、SD卡等方式,将lrz和lsz拷贝到开发板上的/usr/sbin/目录下

6.文件传输

Windows传输文件到开发板,打开终端串口调试软件,lrz,选择"Send file using Z-modem",弹窗选择文件

7.常见问题

Q:lrz报错permission denied
A:权限受限,usr/sbin/下lrz和lsz文件不可执行,手动更改权限chmod 755 lrzchmod 755 lsz,查看权限ls -l lrz lsz

Q:使用MobaXterm软件lrz不会自动弹出传输文件对话框
A:支持rz和sz的终端有 xshell 、secureCRT,而 putty 和 MobaXterm 均不支持。改为使用别的软件,如SecureCRT

Q:Linux的RedHat分支
A:yum 方式安装
yum -y install lrzsz
yum info lrzsz
rpm -ql lrzsz
编译安装
yum -y install make gcc
wget https://ohse.de/uwe/releases/lrzsz-0.12.20.tar.gz
cd lrzsz-0.12.20
./configure --prefix=/usr/local/lrzsz
make && make install

开发板传输文件到Windows,进入目标文件夹lsz filenamefilename为文件名),选择"Receive file using Z-modem",弹窗选择传输目的地址。

使用网络服务

在嵌入式开发中,网络服务带来了很多便利,特别是Ubuntu上的NFS服务。使用NFS服务,开发板可以挂载Ubuntu上的某个目录,假设开发板把Ubuntu上的/home/book目录挂载到自己的/mnt目录,那么在开发过程中,可以如此操作:

  1. 在Ubuntu上的/home/book/abc目录中编译程序
  2. 开发板可以直接运行/mnt/abc下的程序 在Ubuntu上编译程序,开发板可以立刻执行程序,免去了上传、下载等等繁琐的操作。

当然,网络服务不仅仅有NFS,还有TFTP、SSH等服务。如果只是传输文件,可以使用TFTP、SSH等服务,比如:

  • 在Ubuntu启动TFTP服务,开发板通过tftp命令和Ubuntu互传文件;
  • 在Windows启动TFTP服务,开发板通过tftp命令和Windows互传文件;
  • 在开发板上启动SSH服务,Windows通过FileZilla登录开发板,互传文件。

上述场景各有其存在的道理:如果开发板没安装SSH服务,那么就可以通过tftp命令使用Ubuntu或Windows的TFTP服务;如果开发板安装了SSH服务,那么使用FileZilla传输文件时是完全的GUI操作,非常方便;开发、调试过程使用Ubuntu的NFS服务,这是最方便的。

NFS、TFTP、SSH 等服务,都是基于网络的。开发板可以使用网线和电脑相连,也可以使用 USB OTG 线与电脑相连,后者通过虚拟的 USB 网卡使用网络。

NFS 是一种网络服务,开发板可以通过网线连接 Ubuntu 来使用 NFS 服务;甚至也可以通过USB OTG 线连接 Ubuntu,通过虚拟的 USB 网卡使用 NFS 服务。使用网线还是使用 USB OTG 线?有网卡、有网线就用网线,没有再选择 USB OTG 线。

NFS挂载

NFS实现了一个跨越网络的文件访问功能,如下图可以简要说明其原理。其整个架构为Client-Server架构,客户端和服务端通过RPC协议进行通信,RPC协议可以简单的理解为一个基于TCP的应用层协议,它简化命令和数据的传输。

NFS最大的特点是将服务端的文件系统目录树映射到客户端,而在客户端访问该目录树与访问本地文件系统没有任何差别,客户端并不知道这个文件系统目录树是本地的还是远在另外一台服务器。

有些时候需要多次调试开发板文件系统内的某个应用程序,这就需要多次进行编译拷贝等操作,所以我们在前期进行调试时可以直接让开发板使用Ubuntu的nfs目录下文件系统来进行远程调试,用以提高调试效率,加快研发速度。

1.在 Ubuntu 安装并配置NFS

下载sudo apt-get install nfs-kernel-server

创建文件夹放置要传输的文件供NFS服务器使用,以后可以在开发板上通过网络文件系统访问该文件夹。打开NFS配置文件/etc/exports:sudo vim /etc/exports在最后一行添加/home/xxx *(rw,sync,no_root_squash)xxx为文件夹名称,即允许客户端挂载的目录,可添加任意多个,如果不设置,服务器将不允许客户端挂载。)

重启NFS服务sudo /etc/init.d/nfs-kernel-server restart

2.启动NFS

启动NFS服务器sudo /etc/init.d/nfs-kernel-server status

VMware:编辑>虚拟网络编辑器>设置 VMnet2 为桥接模式;虚拟机设置>添加网络适配器并设置

Ubuntu:设置>网络>设置新虚拟网卡 VMnet2 的 IPv4 地址

开发板:终端>创建文件夹nfs用于接收存放来自nfs服务器的文件cd /
mkdir nfs

3.文件传输

nfs接收文件mount -t nfs -o nolock xx.xx.xx.xx:/home/xxx /xxxx(mount为挂载命令,nfs为使用的协议,nolock为不阻塞,xx.xx.xx.xx为NFS服务器的IP,/xxx为Ubuntu目录,/xxxx为开发板上的目录)

注意:不可以从ubuntu的nfs文件中指定某一文件下载,如果下载就会下载nfs文件夹下的所有文件,就算指定/nfs/test/file1也会下载nfs文件夹下的所有文件;挂载成功后,/xxxx下原有数据将会被隐藏,无法找到;测试驱动,测试应用程序都可以在/xxxx目录下进行,并且这个目录也不会占用开发板的Flash空间,很方便。

Xftp

  1. 新建
  2. 在“主机”栏输入开发板IP,“协议”选择SFTP,“端口号”默认,“用户名”和“密码”为开发板用户名和密码,连接
  3. 弹窗左侧为主机文件管理器,右侧为开发板文件管理器,直接拖拽即可
    在这里插入图片描述
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叶雨莳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值