环境:Ubuntu 14.04 OK6410
环境搭建:
(1)
$ sudo apt-get install tftp tftpd openbsd-inetd
或者安装tftp的增强版本tftp-hpa: $ sudo apt-get install tftp-hpa tftpd-hpa
(2)
建立tftpboot目录,用于放置需要下载的文件
$ sudo mkdir -pv /tftpboot/
$ sudo chmod 777 /tftpboot/
$ sudo chmod 777 /tftpboot/* (将此目录下的所有权限都改为777,否则会出现“tftp: server error(2) Access violation”)
(3)
sudo gedit /etc/inetd.conf 修改成如下样子
tftp dgram udp wait nobody /usr/sbin/tcpd
/usr/sbin/in.tftpd /tftpboot
(4)
建立配置文件,建立/etc/xinetd.d/tftp文件(若开始时没有此文件,则新建)
$ sudo cat /etc/xinetd.d/tftp
$sudo chmod 777 /etc/xinetd.d/tftp
写入如下内容:
service tftp
{
disable =no
socket_type =dgram
protocol =udp
wait =yes
user =root
server =/usr/sbin/in.tftpd
server_args =-s /tftpboot -c
source = 11
cps = 100 2
}
其中server_args设置的/tftpboot目录是tftp服务器的目录,设置其访问权限为777.
(5)
sudo gedit /etc/default/tftpd-hpa 修改成如下样子
RUN_DAEMON="no"
OPTIONS="-s /tftpboot -c -p -U tftpd"
(6)
sudo /etc/init.d/openbsd-inetd reload
sudo /etc/init.d/xinetd restart
sudo in.tftpd -l /tftpboot
开始使用:
(1)
使用前首先关闭ubuntu的防火墙
$ sudo ufw disable
(2)
启动开发板,在uboot的命令行设置ipaddr 和serverip
ipaddr 是 开发板的ip地址
serverip 是 PC机的IP地址
两者需要设置到同一网段
操作如下:
在uboot命令行中输入
printenv (查看当前状态下的环境变量)
setenv ipaddr 192.168.1.100
setenv serverip 192.168.1.200
saveenv (保存环境变量,非常重要)
(3)
测试网络是否连接上:
uboot命令行中:ping 192.168.1.200 (应该显示,192.168.1.200 is alive)
ubuntu命令行中:ping 192.168.1.100 (显示TTL等)
(4)
将要烧写的文件放入 /tftpboot,现以内核为例,即将编译好的内核文件zImage放入 /tftpboot
uboot命令行中输入
tftp 50008000 zImage (其中,50008000 是OK6410的内存地址)
下载完成
(5)执行下载到内存中的代码
bootm 50008000
启动内核