嵌入式linux/鸿蒙开发板(IMX6ULL)开发(四)传输文件

简介: 嵌入式linux/鸿蒙开发板(IMX6ULL)开发(四)传输文件

1. PC和开发板之间传输文件


1.1 传输文件的多种方法


嵌入式开发中,涉及交叉编译:在PC上编译,在开发板上运行。所以就涉及PC和开发板之间的文件传输,方法有多种:网络传输、串口传输、USB传输,当然,还有最笨的方法:U盘拷贝。

一般的日常开发流程为:

a. 在Windows上阅读修改代码,然后通过FileZilla把代码传到VMWare中的Ubuntu

b. 在Ubuntu上编译程序;

c. 把程序下载到开发板上,运行验证,

d. 在Windows下通过串口操作开发板。


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


1.2 通过USB给开发板传文件


Windows使用串口跟开发板传输文件,虽然简单,但是传输速度太低。

使用后面章节介绍的网络服务传输文件,特别是使用NFS,是在开发过程中极力推荐的。

但是,如果只是想简单地更新系统,或是简单地上传文件给开发板,可以使用我们的烧写工具:100ask_imx6ull_flashing_tool。


1.3 安装网络服务


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

a. 在Ubuntu上的/home/book/abc目录中编译程序

b. 开发板可以直接运行/mnt/abc下的程序

在Ubuntu上编译程序,开发板可以立刻执行程序,免去了上传、下载等等繁琐的操作。


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

a. 在Ubuntu启动TFTP服务,开发板通过tftp命令和Ubuntu互传文件;

b. 在Windows启动TFTP服务,开发板通过tftp命令和Windows互传文件;

c. 在开发板上启动SSH服务,Windows通过FileZilla登录开发板,互传文件。

上述场景各有其存在的道理:

如果开发板没安装SSH服务,那么就可以通过tftp命令使用Ubuntu或Windows的TFTP服务。

如果开发板安装了SSH服务,那么使用FileZilla传输文件时是完全的GUI操作,非常方便。

开发、调试过程使用Ubuntu的NFS服务,这是最方便的。


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

使用网线,还是使用USB OTG线?有网卡、有网线就用网线,没有再选择USB OTG线。


1.3.1 在Ubuntu中安装、配置NFS


什么是NSF协议?

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

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

1670849187931.jpg

我们为什么要挂载ubuntu的nfs目录?

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


如果你使用的是我们提供的Ubuntu,那么已经安装好了NFS服务。查看一下/etc/export的内容,就知道开发板可以挂载哪一个目录。如果该文件中没有指定目录,请继续往下看。


如果你的Ubuntu未安装NFS服务,那么在确保Ubuntu可以上网的前提下,执行以下命令:

sudo apt-get install nfs-kernel-server


注意:必须要保证Ubuntu可以上网。


然后,还得修改/etc/exports,添加类似以下的内容,下面的例子里允许开发板通过NFS访问Ubuntu的/home/book目录:

/home/book   *(rw,nohide,insecure,no_subtree_check,async,no_root_squash)


最后,重启NFS服务,在Ubuntu上执行以下命令:

sudo /etc/init.d/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是一种网络服务,开发板可以通过网线连接Ubuntu来使用NFS服务;甚至也可以通过USB OTG线连接Ubuntu,通过虚拟的USB网卡使用NFS服务。


1.3.2 Ubuntu安装TFTP服务


在Ubuntu中执行以下命令安装TFTP服务:

book@100ask:~$ sudo apt-get install tftp-hpa tftpd-hpa


然后,创建TFTP服务器工作目录,并打开TFTP服务配置文件,如下:

book@100ask:~$ mkdir  -p  /home/book/tftpboot
book@100ask:~$ sudo chmod 777 /home/book/tftpboot
book@100ask:~$ sudo vim /etc/default/tftpd-hpa


在配置文件/etc/default/tftpd-hpa中,添加以下字段:

TFTP_DIRECTORY="/home/book/tftpboot"
TFTP_OPTIONS="-l  -c  -s"


最后,重启TFTP服务:

book@100ask:~$ sudo service tftpd-hpa restart


查看tftp服务是否在运行,运行如下命令,即可查看是否在后台运行。

book@100ask:~$ ps -aux | grep “tftp”

1670849265749.jpg


1.3.3 在Windows安装TFTP服务


Windows上的TFTP服务由一个应用程序tftpd64提供,下载后双击运行,再做些设置即可。tftpd64的前身是tftpd32,它是32位的程序。对于64位电脑,请使用tftpd64。

tftpd64的官网为:请点击,建议下载“portable edition”版本,无需安装直接运行。官网不好打开的话,直接百度搜“tftpd64”即可,它是免费软件。

tftpd64的使用非常简单,运行后只需要设置3步:

a. 选择目录(开发板将从这个目录读、写文件)

b. 通过IP选择网卡

有些电脑有多个网卡,选择哪个网卡?使用VMware桥接网络时请参考《VMware桥接网络设置》。

1670849286147.jpg

c. 设置防火墙,直接关闭防火墙;或是允许tftpsever使用网络:

对于Windows 10可以按下图操作,对于其他操作系统,请自行百度:

1670849295872.jpg


1.4 使用网络服务传输文件


1.4.1 开发板挂载Ubuntu的NFS目录


开发板和Ubuntu之间网络互通之后,就可以在两者之间传输文件了。

开发板上不一定安装有FTP服务、SSH等服务,所以不一定能使用FTP等工具登录开发板。

但是开发板的系统一般都自带mount命令,并且支持NFS文件系统。所以可以在开发板上执行mount命令挂载Ubuntu的某个目录。这样就可以在开发板和Ubuntu之间传文件了。

开发板使用NFS挂载Ubuntu的前提是:Ubuntu中已经安装了NFS服务,并且在/etc/exports中配置了某个目录供挂载。

使用桥接网络时,确保开发板可以ping通Ubuntu后,就可以通过NFS挂载Ubuntu中的某个目录。

哪些目录呢?请查看Ubuntu的/etc/exports文件。


如果你使用的是VMware桥接方式,假设Ubuntu IP为192.168.1.100,在开发板上执行以下命令:

[root@imx6ull:~]# mount -t nfs -o nolock,vers=3 192.168.1.100:/home/book/nfs_rootfs /mnt
[root@imx6ull:~]# cp  /mnt/hello  ./hello


如果一切正常,你可以在Ubuntu上把文件放到/home/book/nfs_rootfs目录中,在开发板上可以从/mnt目录中访问该文件。


1.4.2 开发板通过tftp传输Ubuntu文件


1.4.2.1 在开发板上使用tftp命令下载文件


首先确保你已经将要下载的文件上传至Ubuntu系统中tftp服务的目录内,如下图所示我的tftp服务目录内有zImage 100ask_imx6ull-14x14.dtb两个文件,我的Ubuntu主机IP地址为192.168.1.123。

1670849330777.jpg

比如我要下载Ubuntu服务器下的zImage 文件,则在开发板上执行如下命令。

[root@imx6ull:~]# tftp  -g  -r  zImage  192.168.1.123


下载后的文件如下图所示。

1670849348210.jpg


1.4.2.2 在开发板上使用tftp命令上传文件


比如我们现在开发板家目录下创建一个1.txt 的文本文件,然后写入111111…. :

1670849374802.jpg

1670849359388.jpg

然后在开发板上执行如下命令上传此文件到Ubuntu 服务器的tftp服务目录下。

[root@imx6ull:~]# tftp -p -l 1.txt  192.168.1.123


此时我们查看Ubuntu服务器的tftp服务目录下,即可看到之前在开发板上创建的1.txt 。

1670849390793.jpg


1.4.3 在Windows上通过FileZilla和开发板传输文件


Windows和开发板之间可以通过TFTP服务,或是SSH服务传输文件。前者需要在开发板上输入tftp命令,后者可以在纯GUI界面操作。

100ASK_IMX6ULL自带的Linux系统中,已经安装并开启了SSH服务,所以只要网络联通,就可以通过FileZilla和开发板传输文件。

注意:在开发过程中,使用NFS是最方便的。


1.4.3.1 确保Windows和开发板之间网络联通


假设Windows和开发板之间网络已经联通,可以通过下列方法确认。


确定开发板IP,假设为192.168.1.100:

使用串口连接开发板,执行ifconfig命令查看或是配置IP,如下图所示:

1670849413867.jpg

在Windows命令行ping开发板,确保网络联通:

启动Windows命令行,执行 ping 192.168.1.100,如果下图所示:

1670849429371.jpg


1.4.3.2 启动FileZilla连接开发板


在FileZilla中输入开发板的IP,输入用户名root,输入端口号22,就可以回车连接开发板了,如下图:

1670849439356.jpg

第一次连接开发板时,会有如下提示:

1670849447224.jpg

连接成功后,就可以直接拖动文件进行传输了:

1670849455447.jpg

2. 使用FileZilla在Windows和Ubuntu之间传文件

使用MobaXterm及可以ssh登录又可以传输文件,不过Mobaxterm在传输文件时使用效率上没有 FileZilla高,所以我们推荐Windows和Ubuntu互相传输文件用FileZilla。

双击打开FileZilla后,按下图操作:

1670849463746.jpg

如下图为示例其中 Ubuntu桥接网卡IP地址是192.168.5.11 用户名book 密码123456 访问端口22 。

1670849470670.jpg

在Filezilla中,左边是Windows文件,右边是Ubuntu的文件,如下图:

1670849480361.jpg

注意:如果不是使用NAT,则需要输入Ubuntu的IP。

相关文章
|
7月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1216 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
7月前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
934 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
7月前
|
移动开发 Rust JavaScript
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1053 4
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
8月前
|
存储 缓存 5G
鸿蒙 HarmonyOS NEXT端云一体化开发-云存储篇
本文介绍用户登录后获取昵称、头像的方法,包括通过云端API和AppStorage两种方式,并实现上传头像至云存储及更新用户信息。同时解决图片缓存问题,添加上传进度提示,支持自动登录判断,提升用户体验。
318 1
|
8月前
|
存储 负载均衡 数据库
鸿蒙 HarmonyOS NEXT端云一体化开发-云函数篇
本文介绍基于华为AGC的端云一体化开发流程,涵盖项目创建、云函数开通、应用配置及DevEco集成。重点讲解云函数的编写、部署、调用与传参,并涉及环境变量设置、负载均衡、重试机制与熔断策略等高阶特性,助力开发者高效构建稳定云端服务。
711 1
鸿蒙 HarmonyOS NEXT端云一体化开发-云函数篇
|
8月前
|
存储 JSON 数据建模
鸿蒙 HarmonyOS NEXT端云一体化开发-云数据库篇
云数据库采用存储区、对象类型、对象三级结构,支持灵活的数据建模与权限管理,可通过AGC平台或本地项目初始化,实现数据的增删改查及端侧高效调用。
377 1
|
8月前
|
存储 开发者 容器
鸿蒙 HarmonyOS NEXT星河版APP应用开发-ArkTS面向对象及组件化UI开发使用实例
本文介绍了ArkTS语言中的Class类、泛型、接口、模块化、自定义组件及状态管理等核心概念,并结合代码示例讲解了对象属性、构造方法、继承、静态成员、访问修饰符等内容,同时涵盖了路由管理、生命周期和Stage模型等应用开发关键知识点。
545 1
鸿蒙 HarmonyOS NEXT星河版APP应用开发-ArkTS面向对象及组件化UI开发使用实例
|
8月前
鸿蒙 HarmonyOS NEXT星河版APP应用开发-阶段三
本文介绍了UI开发中的样式复用与组件构建技术,涵盖@Extend、@Styles和@Builder的使用方法,并通过Swiper轮播、Scroll滚动、Tabs导航等常用组件实现典型界面效果,结合生肖抽卡、小米轮播、回顶按钮等案例,展示实际应用技巧。
204 1
|
7月前
|
移动开发 Android开发
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
340 0
|
8月前
|
传感器 监控 安全
HarmonyOS NEXT 5.0 的星闪(NearLink)开发应用案例
V哥分享HarmonyOS NEXT 5.0星闪开发实战,涵盖智能车钥匙无感解锁与工业传感器监控。低延迟、高可靠,代码完整,速来学习!
1001 0

热门文章

最新文章