Telantan

Zedboard :TFTP服务配置

0
阅读(5189)

 

TFTP(普通文件传送协议Trivial File Transfer Protocol)是一种客户机(cliet)和服务器(server)之间进行简单文件传输的协议,基于UDP协议,适合于开销不大、不复杂的应用场合。TFTP协议专门为小文件传输而设计,只能从服务器上获取文件,或者向服务器写入文件,不能列出目录,也不能进行认证。

小巧,简单,易用这些优点使得TFTP在嵌入式开发领域应用的非常广泛,下面基于Zedboard开发板和RHEL6.3(Vmware虚拟机),简要介绍TFTP服务配置过程。

1.1 网络设置

从XILINX GIT下载U-boot源码中可以发现ZED目标板默认地址为192.168.1.10,服务器主机地址为192.168.1.50,

clip_image001

Windows设置,IP固定为192.168.1.110

clip_image003

RHEL6.3虚拟机设置

选择Bridged模式,在这种模式下,VMWare虚拟出来的操作系统就像是局域网中的一台独立的主机,它可以访问网内任何一台机器。

clip_image005

LINUX系统网络设置,system – preferences-network connections

clip_image006

选择edit

clip_image007

将Method设为Manual,手动设置IP地址,这里设为192.168.1.50

命令ip addr确认设置是否成功,如果不对,重启虚拟机,

clip_image009

当然你也可以通过system-config-network, 或ifconfig完成IP的设置。

1.2 网络测试

在REHL,Windows,Zed之间互PING测试,

clip_image010

clip_image011

clip_image012

1.3 TFTP安装

确认Zed端支持tftp命令,

which tftp

clip_image013

在RHEL6.3中使用以下命令确定TFTP服务器是否已经启动,

netstat -a |grep tftp

clip_image014

如果没有启动TFTP服务,则需要挂载DVD ISO文件,选择对应TFTP RPM包安装,

clip_image015

clip_image017

挂载cdrom,并将其加入到安装程序的搜索路径中

mkdir /mnt/cdrom
mount /dev/cdrom /mnt/cdrom
vi /etc/yum.repos.d/cdrom.repo

内容如下:

[base]
name=base RPM Repository for RHEL6
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0

主要修改baseurl,将刚刚加载的/mnt/cdrom到搜索路径中

更新yum

yum clean all
yum update

更新结果如下,

clip_image019

执行add/remove software,

clip_image020

搜索tftp,找到对应的package安装即可。

clip_image022

1.4 TFTP配置

安装完成后,建立tftboot目录,用于文件的上传与下载,

mkdir /tftpboot
chmod 777 /tftpboot

修改配置文件,主要修改两个位置,

vi /etc/xinetd.d/tftp

# default: off
# description: The tftp server serves files using the trivial file transfer \
#       protocol.  The tftp protocol is often used to boot diskless \
#       workstations, download configuration files to network-aware printers, \
#       and to start the installation process for some operating systems.
service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /tftpboot -c
        disable                 = no
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}

重启服务,

/etc/init.d/xinetd restart

clip_image023

再次监测是否启动

netstat -a |grep tftp

clip_image024

先在本机登陆测试,

tftp 192.168.1.150

clip_image025

如果出现上面错误,做以下检查

l 确认修改文件权限

chmod –R 777 /tftpboot

clip_image026

l 关闭防火墙

System- Administration- firewall , 选择Disable

clip_image027

l 修改SElinux设置

vi /etc/sysconfig/selinux

clip_image028

重启机器

reboot

本机tftp测试,

clip_image029

在zynq开发板下载上传测试,

clip_image031

在宿主机RHEL端检查到上传文件world.c,

clip_image032

1.1 TFTP在调试中的应用

经过前面的步骤,已经打通了宿主机与Zynq客户机之间的TFTP数据通道,下面就可以利用这个通道进行应用程序的调试了。

在RHEL6.3宿主机端进入/tftpboot目录,编写一个简单的应用程序,

cd /tftpboot
vi hello.c

hello.c内容如下:

#include <stdio.h>

void main() {

printf("Hello world\n");

printf("Hello Zynq\n");

}

clip_image001[1]

编辑.bashrc文件,

vi ~/.bashrc

clip_image002

加入别名xgcc,用来快速调用arm-xilinx-linux-gnueabi-gcc编译器

clip_image003

编辑完成后,重新source生效

source ~/.bashrc
alias | grep xgcc

clip_image004

编译hello.c,确认生成a.out文件

xgcc hello.c
ls

clip_image005

有宿主机直接行a.out,可以发现是不行的,因为这个程序是为Zynq编译的,当然不能在X86上运行,

clip_image006[1]

在Zynq端用TFTP登陆,下载a.out,

tftp –gr a.out 192.168.1.50
/a.out

clip_image007[1]

发现还是无法直接执行的,加上运行权限,再试,

chmod +x a.out
/a.out

clip_image008