|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
TFTP(Trivial File Transfer Protocol,简单文件传输协议),是一个基于 UDP 协议实
/ n* _, I4 m5 f* E- ?# T现的用于在客户机和服务器之间进行简单文件传输的协议,适合于开销不大、不复杂的应用场
$ v# M5 \! @/ m. C* b; X' A. x1 y, d合。TFTP 协议专门为小文件传输而设计,只能从服务器上获取文件,或者向服务器写入文
5 x' n3 {2 `& H ?件,不能列出目录,也不能进行认证。
}2 |8 [: B% D- t. p1 K根据上面关于 TFTP 的介绍,实现 TFTP 需要搭建一个 TFTP 的服务器,iMX6 开发板当做8 {1 _3 _# J6 }6 F6 `- b: x- K
客户端。+ x. [! k( h: M+ i' @* j1 @
1.1 搭建服务器
9 L$ s1 J$ [5 O5 y1 V打开虚拟机 Ubuntu 终端,进入 root 用户,输入“sudo apt-get install xinetd”命令4 P3 V, r& A6 h$ c4 m% S: x. z% V
安装 xinetd,安装完成如下图。(如果报错,注意检查命令拼写:xinetd), y( a, T* _, @
![]()
- i/ q: y5 E8 d# w; f- |接下来输入“sudo apt-get install tftp tftpd”安装 tftp 和 tftpd,安装完成如下图。
; Q7 ?9 v- a5 `8 ? r1 s 9 m, O( U2 A3 B9 A+ V) O
然后建立 TFTP 的配置文件,使用命令“vi /etc/xinetd.d/tftp”建立文件,如下图。 @+ r' V6 k, Z/ c6 D; c
![]()
1 K* U- c8 z; A2 l6 h: e& d写入如下内容:
) L" g7 q c3 `) w) M% N3 Mservice tftp0 J |% S! H# O2 ]7 u5 s
{# ], |6 d6 J0 t6 w* t
socket_type = dgram |, \2 H; @8 D! H& T' g @. p! |
protocol = udp
. x M# V3 N6 fwait = yes
4 p* P, A: {2 _5 r" \user = root7 O l8 _6 I3 g% s( ?- v
server = /usr/sbin/in.tftpd7 e$ P2 ^9 p) u. h/ R
server_args = -s /var/tftpboot/. x+ e+ V% w: n" Q# N
disable = no
5 T4 i: Q5 D b. i. R5 q _per_source = 11
2 b3 N" i3 J+ i8 X/ Jcps = 100 2
3 x- }4 @$ z$ N d( u4 o! x. O% [3 Mflags = IPv4
9 ^: t- s0 X; O4 |1 G# I4 q7 c3 V}
0 {" l+ a# \. Q; ^6 f) \5 j如下图。
+ i, T* }/ Y7 H0 @* I 6 Q P4 X: G1 ]5 ^
注意:如上图所示,这个文件在粘贴内容之后,必须按照上面的格式严格对齐。 g2 U1 e8 b- Y& k# b6 m; v
退出并保存。其中 server_args 设置的/var/tftpboot 目录是 tftp 服务器的目录,TFTP
& F- x" F$ C- p- M6 L客户端就是从这个目录里面获取服务器上的文件的。使用命令“mkdir /var/tftpboot”建立
9 ^% b/ q& X3 x) U4 `: N* G& wtftp 服务器的目录,然后设置/var/tftpboot 的访问权限为 777,如下图。
9 q7 t0 ^7 p1 ~$ N- k/ _/ F 7 ]9 i2 @! n1 p3 q$ b* s2 h+ S' Q) w
输入”sudo /etc/init.d/xinetd restart”命令重启 xinetd 服务,如下图。5 S& @" a1 ?7 |1 ^
/ R$ y/ A0 M2 M5 ~, G7 H
服务器到这一步就搭建好了,下面来进行测试。0 o: r4 c% \" I+ v! G# `8 H& @/ X B
2.1 服务器测试/ S4 n8 D* S3 }1 {7 q
2.1.1 本机测试& R4 M& X/ T& `& J& s- g
本机测试:在/var/tftpboot 下面建立一个文件 test,在里面输入 hello world,然后保存
1 w* n5 P( w/ K: L8 J该文件,如下图。6 m% u% {2 F! w
$ G& e- p; ~5 l ~
再启动另一个终端,然后输入 tftp 127.0.0.1,如下图。9 v# V* P& l3 {( |' \
![]()
. W4 ^5 {) E! d" R! o4 j" [: @7 `输入 get test 获取 test 文件,然后输入 q 退出 tftp,如下图。7 W) I( K& u3 I# Z w b
+ f6 Q; ?! c6 Z$ a, \' ]2 g
由上图可知,获取到 13 字节的 test。
, b- p8 x0 _* n: ^8 Z/ x然后输入 ls 查看当前目录下是否有 test 文件了,通过查看,发现当前目录下已经有 test) a; O4 Y% M7 K2 F
文件了,这就是/var/tftpboot 目录下的那个 test 文件。然后使用 cat 命令查看一下
* B$ N4 G3 Z8 Y& O3 t( ~4 L3 A) Xtest 的内容,如下图。* d9 W$ G/ x6 X! u* G4 I! T
![]()
3 ]1 P' J: F/ V- }) G- s' `通过上面的截图,看到 test 文件里面的内容是 hello world,与/var/tftpboot 目录的
/ S u0 @& J9 Q" C+ btest 是一样的,至此的 TFTP 服务器端的配置和测试就完成了。! D- g! ]& C" V, }6 Q& R: C4 o
2.1.2 开发板实现 TFTP 文件传输
8 K1 b& X Q5 L# UiMX6 开发板进入系统后,输入“ifconfig”命令查看板子 ip,然后输入“ping
- z- U- |: c5 }6 z, s% k# L" `192.168.3.183”命令来测试板子和虚拟机 Ubuntu 之间的网络。如下图。+ j- z5 y5 z. [6 I+ Y
: N" I7 T- X, o6 G( ]7 ]5 D: T4 n
由上图可知,开发板和虚拟机的网络是连通的。这里”192.168.3.183”ip 是虚拟机
' h6 e, L1 N: F3 L( h( }Ubuntu 的 ip。如果用 ifconfig 查看到的开发板 ip 和虚拟机 Ubuntu 的 ip 不在同一网段,则+ S8 N8 o+ k, r9 r* k% R
可以通过修改开发板的”/etc/eth0-setting”文件来修改 ip,如下图。
+ a' w* E6 C7 a% z/ Q 2 t7 ~$ p8 c2 V* N* v$ u" X
修改完成后,重启开发板。用 ifconfig 查看到 ip 修改有效。& J/ q+ \/ j, T3 _
在开发板串口输入“tftp -g -l test -r test 192.168.3.183”,并用 cat 命令查看,如下图。7 [+ g, G2 [1 [( ~
![]()
. x6 I0 e U5 ^; M" Y8 w4 K8 q由上图可知,获取到的 test 文件的内容和 TFTP 上文件的内容是一样的,至此 TFTP 搭建1 V. u; u" q$ H7 M1 `' W( t
以及测试全部完成。以后再调试程序的时候可以用 TFTP,不用再来回拔插、挂载 U 盘了。
0 P: q, [' R) j- P$ P6 e7 Q& {5 l% C T |
|