[转载] http://blog.csdn.net/helldevil/article/details/39202159
1、TFTP服务介绍
TFTP(Trivial File TransferProtocol,简单文件传输服务)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。TFTP承载在UDP上,提供不可靠的数据流传输服务,不提供存取授权与认证机制,使用超时和重传方式来保证数据的到达。
在宿主机上安装一个TFTP服务器,可对目标机进行下载。比如,在虚拟机里面Linux系统上装上了TFTP服务器,然后配置好之后,可以给我们的开发板即目标机进行下载,包括内核啊等等。
准备在自己的Ubuntu14.04上使用tftpd服务,然后在网上查怎么搞,方法很多蛋疼得一米,按照这些方式,配置一大堆,尤其是有人要求安装xinetd,然后还要配置这个xinetd.conf文件,事实证明根本没必要,如果你按照这个来,我运行半天总是time out。
我来说下我的步骤sudo apt-get install tftpd-hpa, tftp-hpa
然后sudo vim /etc/default/tftpd-hpa,如果vim和gedit无法编辑可以使用notepad打开。
配置文件如下
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/tftpboot" -->这个是你的工作目录,需要自己选定,chmod 777 /tftp我是在根目录下搞了个
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-l -c -s"
然后重启tftpd-hpa服务sudo service tftpd-hpa restart
3、本地测试tftp服务器
在/tftpboot下新建文件1.txt
tftp 127.0.0.1/localhost tftp> get 1.txt Received 12 bytes in 0.0 seconds tftp> quit |
看能否下载某个文件。如果可以,说明tftp服务器已经配置成功。
4、用开发板验证tftp服务器是否可用
以TI公司的DM6446开发板为例,使用tftp把内核下载到开发板的DDR2中。步骤如下
n 先将内核镜像文件 uImage放置在 tftp 服务器配置路径/tftpboot下(要根据自己的具体路径)。连好串口线、网线,配置好串口,上电target开发板。
n 超级终端显示 Hit any keyto stop autoboot: 3 时按下回车键,中断系统自动启动,此时显示提示符 SEED_DVS6446_v1.2 #;下面配置 U-Boot环境变量用于TFTP下载内核启动;
n 在命令提示符下,配置好开发板的IP地址和服务器IP地址。配置TFTP 服务器 IP 地址; SEED_DVS6446_v.12 #setenv serverip xxx.xxx.xxx.xxx
其中, xxx.xxx.xxx.xxx为 Linux 主机服务器的 IP 地址; SEED_DVS6446_v.12#为 U-Boot操作提示符;
n 配置 DVS6446平台的 IP 地址; SEED_DVS6446_v.12#setenv ipaddr xxx.xxx.xxx.xxx
其中, xxx.xxx.xxx.xxx为 DVS6446 的 IP 地址,此处配置为静态 IP地址;
SEED_DVS6446_v.12 #为 U-Boot操作提示符;
n 下 载内 核; SEED_DVS6446_v.12 #tftp 0x80800000 uImage; bootm 0x80800000
其中, 0x80800000为 DDR 的地址空间,该命令将 uImage 内核下载到 DDR中,下载完成时从 DDR地址引导 Linux 内核启动,SEED_DVS6446_v.12 #为 U-Boot操作提示符;
内核启动完成,显示登陆提示符:如xxxxx login: 此时系统启动已经完毕,用户以root账号登陆,可以进行相关操作。