Zedboard :TFTP服务配置
0赞
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,
Windows设置,IP固定为192.168.1.110
RHEL6.3虚拟机设置
选择Bridged模式,在这种模式下,VMWare虚拟出来的操作系统就像是局域网中的一台独立的主机,它可以访问网内任何一台机器。
LINUX系统网络设置,system – preferences-network connections
选择edit
将Method设为Manual,手动设置IP地址,这里设为192.168.1.50
命令ip addr确认设置是否成功,如果不对,重启虚拟机,
当然你也可以通过system-config-network, 或ifconfig完成IP的设置。
1.2 网络测试
在REHL,Windows,Zed之间互PING测试,
1.3 TFTP安装
确认Zed端支持tftp命令,
which tftp
在RHEL6.3中使用以下命令确定TFTP服务器是否已经启动,
netstat -a |grep tftp
如果没有启动TFTP服务,则需要挂载DVD ISO文件,选择对应TFTP RPM包安装,
挂载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
更新结果如下,
执行add/remove software,
搜索tftp,找到对应的package安装即可。
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
再次监测是否启动
netstat -a |grep tftp
先在本机登陆测试,
tftp 192.168.1.150
如果出现上面错误,做以下检查
l 确认修改文件权限
chmod –R 777 /tftpboot
l 关闭防火墙
System- Administration- firewall , 选择Disable
l 修改SElinux设置
vi /etc/sysconfig/selinux
重启机器
reboot
本机tftp测试,
在zynq开发板下载上传测试,
在宿主机RHEL端检查到上传文件world.c,
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");
}
编辑.bashrc文件,
vi ~/.bashrc
加入别名xgcc,用来快速调用arm-xilinx-linux-gnueabi-gcc编译器
编辑完成后,重新source生效
source ~/.bashrc
alias | grep xgcc
编译hello.c,确认生成a.out文件
xgcc hello.c
ls
有宿主机直接行a.out,可以发现是不行的,因为这个程序是为Zynq编译的,当然不能在X86上运行,
在Zynq端用TFTP登陆,下载a.out,
tftp –gr a.out 192.168.1.50
/a.out
发现还是无法直接执行的,加上运行权限,再试,
chmod +x a.out
/a.out













![clip_image001[1] clip_image001[1]](http://files.chinaaet.com/images/2012/12/04/6382617579594.png)


