目录
- 前言
- 一、为什么要文件传输
- 二、利用共享文件夹(简要流程)
- 三、tftp传输与环境搭建
- 四、传输前的准备工作
- 五、测试准备工作是否完成
- 六、传输文件
- 6.1、windows中tftp32的配置
- 6.2、嵌入式Linux(板子)中获取或发送文件
- 6.2.1、tftp命令用法
前言
在我们接触嵌入式Linux之前,你一定接触过ubantu或者centos或者其它Linux发行版吧,很好,目前我们都是使用在虚拟机上面的。而我们所说
的嵌入式Linux,是运行在开发板里面的(裁剪后Linux)。
一、为什么要文件传输
首先,为什么我们要实现将windows的文件传给嵌入式Linux(板子)呢?因为嵌入式设备(板子)的运行速度往往比主机慢得多,许多专用的嵌入式硬件被设计为低成本和低功耗,没有太高的性能。整个编译过程是非常消耗资源的,嵌入式系统往往没有足够的内存或磁盘空间,因为板子的内存空间资源有限
,而且因为Linux系统是经过裁剪,很多库也没有,所以,在板子上去安装gcc去编译程序不太现实。
所以我们就需要通过电脑去编译后,然后把可执行文件传输给板子。
二、利用共享文件夹(简要流程)
我的做法是在VMware虚拟机中与windows共享文件夹
,这样在虚拟机中(centos7系统)中写C程序,然后在虚拟机中编译程序生成执行文件存放在这个共享文件夹
中。
因为是共享文件夹,所以windows可以直接去查看传输这些文件到板子上。
三、tftp传输与环境搭建
windows与嵌入式Linux(板子)间是通过tftp
进行文件传输的(至于tftp
的知识,这里不介绍,不是很了解也不影响这个操作)。想要进行tftp
传输,自然需要去搭建tftp
环境,谁要用到,谁就得搭建。所以windows需要搭建tftp
环境(作为服务端tftp-service
发送),一般来说对于嵌入式Linux设备(板子),该设备中的u-boot支持tftp-client
(作为客户端接收),所以嵌入式设备不用配置tfpt
,那么windows怎么搭建这个所谓的tfpt
环境呢,其实很简单,只需要下载一个软件就好了------tftp32。而板子的嵌入式Linux系统又不用做什么,是不是很简单。(资源链接放下面需要自提)
软件链接:https://pan.baidu.com/s/1L7RxhJEozw160BgzIHDI4Q
提取码:tftp
四、传输前的准备工作
搭建好环境之后呢,我们就需要进行联网操作
,因为我们文件传输是得有网络,才能传输的嘛,所以联网很关键!而且要在同一个网段下(可以两个设备连接上同一个路由器)。一个就是我们的电脑windows连网,还有就是我们的嵌入式设备(开发板),也需要联网,至于开发板怎么联网,好问题!我当时是通过系统自带的脚本文件执行联网的。如下图:
(通过MobaXterm软件中串口连接开发板进入的嵌入式Linux系统)
在etc 目录下有个wlan-connect.sh的脚本文件,
在命令行输入./wlan-connec
WIFI名
WIFI密码
1
就可以连接上WIFI了!
MobaXterm软件资源链接:https://pan.baidu.com/s/1k1RAurXizs1IuDzaI7VQkg
提取码:lsc6
五、测试准备工作是否完成
连上网络之后,我们先用ping命令去测试一下,windows,能不能与嵌入式Linux ping
通。
windows中win+R
,输入cmd
回车,进入一个黑色的窗口,然后输入ping
嵌入式Linux的ip
,然后回车
(windows ping 开发板成功的现象)
如果你不知道你的开发板的IP地址,你可以输入命令ifconfig
查看:
然后在嵌入式Linux中去ping
windows的ip
,看看是否能够ping通
(嵌入式Linux(开发板) ping windows成功的现象)
如果你不知道怎么看你的windows的IP地址,你可以点开你电脑连接的WIFI,然后点属性
,拉到最下面,那个Ipv4
地址就是了。
如果嵌入式Linux ping
不同windows但是windows能ping
通嵌入式Linux,那么就关闭windows的防火墙
,就好了:
六、传输文件
以上完成没有问题之后,我们就可以开始传输文件了,我们只需要在tftp
中绑定好要传输文件的根目录
,然后点击服务端
,就可以在嵌入式Linux中获取文件。
题外话
:如果在虚拟机中需要传输文件,前题得搭建好tftp环境(centos
的tftp环境搭建参考http://t.csdn.cn/rNrmV
),其次在修改/etc/xinetd.d/tftp
文件中的server_args =-s 根目录 -c
去设置一个根目录
,-c
表示可以在这个目录下创建新文件,将其中的disable=yes
改为disable=no
开启服务。
6.1、windows中tftp32的配置
(点击Browse选择你程序文件存放的目录,嵌入式Linux获取文件就会在这个目录里面去获取,我这里是选择了共享文件夹)
(然后点击Setting,按下图配置)
(最后选择tftp server
,这样windows就会处于一个监听的状态,等待嵌入式Linux获取或发送文件)
6.2、嵌入式Linux(板子)中获取或发送文件
好,那么现在windows我们是已经大功告成了,接下来,我们只需要去嵌入式Linux下输入指令,就可以传输文件了。
6.2.1、tftp命令用法
(centos7
虚拟机中测试这个命令,前提虚拟机需要搭建tftp环境
,ubantu系统可参考http://t.csdn.cn/NuMtz
,centos的话参考http://t.csdn.cn/rNrmV
)
tftp
传输的对象的IP地址
输入tftp IP 后回车就会出现:
可以再输入下面这些命令,去使用tftp
:
connect:连接到远程tftp服务器
mode:文件传输模式
put:上传文件
get:下载文件
quit:退出
verbose:显示详细的处理信息
tarce:显示包路径
status:显示当前状态信息
binary:二进制传输模式
ascii:ascii传送模式
rexmt:设置包传输的超时时间
timeout:设置重传的超时时间
help:帮助信息
?:帮助信息
-g
表示下载文件(get)
-p
表示上传文件(put)
-l
表示本地文件名(local file)
-r
表示远程主机的文件名(remote file)
例如发送一个文件:
输入put 文件名(这个文件是在当前目录
下的文件,如果文件不存在会报错)
在嵌入式Linux(开发板)
中使用tftp
命令获取执行文件:
例1:要从远程主机(windows)192.168.0.102
上下载main
(编译过的执行文件),则应输入以下命令:
tftp -g -r main 192.168.0.102
我在/root目录下新建了个linux C的文件夹,刚开始什么没有,执行上面命令后,就获取到windows中tftp32
绑定根目录
中的执行文件main
了
获取到文件后,就可以输入./main
执行文件了
本人也是初学者,以上若有什么说的不正确的地方,可以在评论区指点一下(嘿嘿嘿)