|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
这部分内容主要是关于TFTP服务器的搭建,特别单独拿出来讲解一下。. r% ?! b5 e& N) R6 b( r& C/ ]
一、TFTP服务器的搭建与测试:
8 Z: |3 d) h8 J, P, S6 j9 YTFTP是用来下载远程文件的最简单网络协议,它其于UDP协议而实现。嵌入式linux的tftp开发环境包括两个方面:一是linux服务器端的tftp-server(服务器)支持,二是嵌入式目标系统的tftp-client(客户端)支持。因为u-boot本身内置支持tftp-client,所以嵌入式目标系统端就不用配置了。下面就详细介绍一下linux服务器端tftp-server的配置( F' W W# _ @3 P; C3 F4 G9 q' c
实际上我们同样可以在windows上搭建TFTP服务器,之后的话我可能会对这部分内容作一些补充。但这里我主要讲解一下在Linux下的TFTP服务器搭建:8 I) w) j. z/ L. H
1、搭建TFTP服务器我们需要三个东西:xinetd、tftp、tftpd,在保证联网的情况下安装它们。& o3 C, v |: z6 q7 M/ R
sudo apt-get install xinetd! p1 D, g/ K' W* Y, [
sudo apt-get install tftp' g( |8 N* j8 c7 t% n
sudo apt-get install tftpd9 Q7 ~6 S3 e. e) s0 f
2.建立TFTP的配置文件(这一步比较容易出错):
C- ?4 S. D8 h8 k: _vi /etc/xinetd.d/tftp
9 ^: q5 U6 e# Z2 W( h; C, W& H输入以下代码:2 ?7 I* @: \) d2 ]2 ?" B5 i
service tftp
, E: {5 W! A4 C9 w5 Z; A{
0 y7 I* V3 g Q1 J" lsocket_type = dgram9 e/ K/ H( t2 W6 w7 I! d3 F- X8 p+ _
protocol = udp
+ t7 s( M3 B7 ?& d/ K# W# Owait = yes
|, L% Y* T. c4 z* S4 f; nuser = root4 r; i( b: m9 A: K' S
server = /usr/sbin/in.tftpd
( v) i, Q- \: v6 s3 gserver_args = -s /var/tftpboot/
! _6 ~! e, ` i. X9 ]$ n: |disable = no
, @% j6 K K) f4 H* xper_source = 113 D* a6 m- M( L. x/ {
cps = 100 2" u9 |& ^3 ^; L" P' q7 K# x
Flags = IPv4
/ A) D5 h# U8 \4 {2 j}$ M2 Q& L: p8 R( w I e$ F
代码格式如下图所示(用tab键隔开,不建议使用空格)
, D* b4 N0 G e( o! m% x6 ^
b$ H- z* y/ k6 t/ A其中的server_args是tftp 服务器的目录。TFTP 客户端就是从这个目录里面获取服务器上的文件的。上图使用的是/var/tftpboot,用户可以自己定义。
9 }; u/ O1 y* G4 `$ I/ h6 [3、创建目录:mkdir /var/tftpboot
% s$ _! [$ e5 w! e9 o4、改变权限:chmod 777 /var/tftpboot5 M* @2 u+ Q/ H" N) w: l6 B) |
5、启动xinetd服务:sudo /etc/init.d/xinetd restart8 K6 s+ I* \: M; T7 j0 ]9 w
6、测试TFTP服务器:
4 M$ P9 u: A7 `6 `输入命令:netstat -a | grep tftp
+ t4 P# k2 ], l
- z. h% A, q$ _* z9 c出现上图的情况说明配置成功1 Y! f' P3 n3 v( p) T) G; D% `0 z, S
我们可以本地测试一下tftp服务器:8 ^# |% N& Z w+ J
①在tftpboot目录下创建一个文本文件,随便写点什么:
; d8 E% `8 G* W, P' K/ V, u- i例如vi /var/tftpboot/tftptest
7 D- \- D3 H) }' S% `, [输入“This is TFTPTEST!”,保存退出。4 J! y- P! _( \: Y( X
②随便进入一个你常用的目录,作为下载文件的目的目录,输入tftp(也可以写成tftp localhost或者tftp 127.0.0.1),连接到本地的tftp服务器。. ~5 N1 U7 ]. u6 \' | Z
③get test下载文件到目的目录,q退出,ls就可以看到文件已经到了你的当前目录。cat test 就可以看到了文件内容。8 t6 s: b# O- ~: @ `. b
7、TFTP操作:
$ C$ b; x! F: O) i( z注意tftp命令行下是不支持Linux命令的,它有自己独特的命令,使用?命令可以看到。- @" ^/ n% b% w- @' V* ~9 ^
connect:连接到远程tftp服务器 ' M* i1 b( A) }* m, ?. q) u# V" r6 _, F
mode:文件传输模式
4 _9 e S! Z- u v put:上传文件+ X" O# @# L6 O$ k7 |
get:下载文件 3 @7 \6 L9 c6 O5 c3 u: g1 b Q
quit:退出
; o1 d+ z+ b R verbose:显示详细的处理信息
8 v) R, j' Q- @! r- ?& p tarce:显示包路径
" \$ K& O! Q2 X. |1 D3 ~ status:显示当前状态信息 6 f) q4 O# V) n
binary:二进制传输模式, m6 i6 y* U9 N$ F
ascii:ascii传送模式
; \; e8 ~6 C. X: N1 k! | rexmt:设置包传输的超时时间1 U& d8 j( ?7 x7 j$ n! ~
timeout:设置重传的超时时间. P; b, A8 G* ?' G1 W# M1 _6 Z5 M
?:帮助信息: Z6 _* v4 j# Q/ k
8.开发板连接tftp客户端& \" u) }: O0 B, L) S5 R
注:在连接开发板和ubuntu的tftp服务器之前,一定要首先保证开发板和ubuntu的ping通,& J$ R0 S/ E8 K2 u3 P8 E
在保证ubuntu和开发板能够ping通的条件下,就可以使用tftp服务器了。
9 i3 h" O( K: H K: `- M( w g①把需要下载的文件拷贝到/var/tftpboot目录下,2 S' Z$ q; {' |. W# z
②开发板下载文件:
' C. x3 {# E" g( u m; U0 a- @1 N命令格式tftp [option] ... host [port]4 x& j2 m7 s( x' T4 C% j% ?
[option]:
! h6 P' m T3 Z! ?5 V-g表示下载文件(get)
' U5 N& A3 g/ m7 u -p表示上传文件(put)! m* S }4 O$ b) U
-l表示本地文件名(local file)
6 l( x1 Z9 i# e8 |6 m8 M/ V. A -r表示远程主机的文件名(remote file)
3 G7 Q6 n0 ] o6 }9 D( G例如:tftp -g -l helloworld -r helloworld 192.168.1.109 |
|