TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机不服务器间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。
1、 Linux下配置 TFTP
安装 tftp 所需的软件。首先需要安装 tftp-hpa,tftpd-hpa,前者是客户端,后者是服务程序,在终端下输入
sudo apt-get install tftp-hpa tftpd-hpa
安装tftp-hpa和tftpd-hpa。然后还需要安装 xinetd,在终端下输入
sudo apt-get install xinetd
安装好xinetd。 配置相关服务文件。进入根目录下的 etc文件夹(cd /etc/),首先看目录中有没有xinetd.conf 文件,如果没有则新建一个,有的话查看内容,看是否与下面的一致,若不一致则修改,内容如下:
# Simple configuration file for xinetd
#
# Some defaults, and include /etc/xinetd.d/
defaults
{
# Please note that you need a log_type line to be able to use log_on_success
# and log_on_failure. The default is the following :
# log_type = SYSLOG daemon info
}
includedir /etc/xinetd.d
配置tftp 服务器
命令:
sudo vim /etc/default/tftpd-hpa
将内容修改成
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure"
其中 tftpboot这是你tftp 服务器的工作目录, 这里所设置的tftpboot在根目录下,可以自行修改,注意,在新建工作目录时,最好修改其权限为 777,命令
sudo chmod 777 /tftpboot
然后迚入xinetd.d 文件夹(cd /etc/xinetd.d),查看是否有一个 tftp 文件,如果没有就新建一个,如果有的话就查看内容是否不下面的一致,丌一致则修改,内容如下:
service tftp
{
socket_type = dgram
wait = yes
disable = no
user = root
protocol = udp
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
per_source = 11
cps =100 2
flags =IPv4
}
修改所需文件夹的权限。需要修改的文件夹也就是上一步提到的那个服务器文件存放的文件
夹,以本手册的配置文件为例,创建一个文件夹(sudo mkdir /tftpboot),然后把它可以设置成
访问权限为
sudo chmod 777 /tftpboot。
重新启服务。
sudo service tftpd-hpa restart
sudo /etc/init.d/xinetd reload
sudo /etc/init.d/xinetd restart
2、开发板使用 tftp下载镜像到 Nand Flash
1) 打开PC机tftp服务
2) 系统上电后迚入uboot,设置开发板环境变量开始下载。
OMAP3 Stalker # setenv serverip 192.168.1.3 (主机IP)
OMAP3 Stalker # setenv ipaddr 192.168.1.7(评估板IP)
OMAP3 Stalker # saveenv
在uboot的命令中输入printenv查看环境变量的设置,后面会显示上面的IP配置信息
3) 下载MLO
#if tftpboot MLO; then nandecc hw; nand erase 0 80000; nand write 82000000 0 80000; fi;4) 下载u-boot.bin
#if tftpboot u-boot.bin; then nandecc sw; nand erase 80000 160000; nand write ${loadaddr} 80000 160000; fi;
5) 下载uImage
#if tftpboot uImage; then nandecc sw; nand erase 280000 400000; nand write ${loadaddr} 280000 400000; fi;
done
Bytes transferred = 2713652 (296834 hex)
SW ECC selected
NAND erase: device 0 offset 0x280000, size 0x400000
Erasing at 0x660000 -- 100% complete.
OK
NAND write: device 0 offset 0x280000, size 0x400000
4194304 bytes written: OK
#if tftpboot ubi.img; then nandecc sw; nand erase 680000 1000000; nand write ${loadaddr} 680000 d40000; fi;
备注:
一级引导地址:0x0到0x80000
RAM内存地址:0x82000000
u-boot 地址:0x80000到160000
kernel 内核地址:0x280000到0x400000
ubi.img 文件系统地址:0x680000到0x1000000