(注:本文参考资料:朱有鹏嵌入式课程。本文为个人学习记录,如有错误,欢迎指正。)
1. 设置网络
设置开发板与虚拟主机Ubuntu的网络连接。
(1)将开发板与Windows主机用网线相连;
(2)开发板进入uboot命令行,设置开发板的IP地址和子网掩码,即环境变量ipaddr、netmask的值。注意确保开发板与虚拟主机Ubuntu处于同一网段。此处设为:
netmask = 255.255.255.0 ipaddr = 192.168.1.200 |
(3)在虚拟主机Ubuntu设置选项中,将网络适配器配置为“桥接模式”;
P.S.:VMware的网络模式:桥接模式、NAT模式、仅主机模式详解
|
(4)进入VMware的“编辑”菜单,进入“虚拟网络编辑器”界面,将虚拟机桥接至有线网卡。因为开发板与虚拟主机Ubuntu是通过网线连接的,故它们之间的通信只能通过有线网卡进行。
|
(5)设置Ubuntu的静态IP地址。默认情况下,Ubuntu的IP地址动态分配的,但动态IP地址不便于tftp下载操作,故将其IP地址设置为静态IP地址。设置方法:vim /etc/network/interfaces,填充以下内容。(若该路径下无该文件,则创建该文件)
# interfaces(5) file used by ifup(8) and ifdown(8) auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.1.100 netmask 255.255.255.0 gateway 192.168.1.1 |
填充后,保存该文件,重启网卡,即可生效。Ubuntu重新网卡命令如下(不同版本可能会有差异):
ifdown eth0 //关闭网卡0
ifup eth0 //开启网卡0
|
P.S.:若设置无误,但ping失败,可尝试关闭Ubuntu和Windows下的防火墙。
2. 搭建tftp服务器
(1)安装tftp所需软件,tftp-hpa、tftpd-hpa、xinetd。在Ubuntu终端在运行如下命令进行安装:
sudo apt-get install tftp-hpa tftpd-hpa sudo apt-get install xinetd |
(2)配置/etc/xinetd.conf
若该路径下没有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 |
(3)配置/etc/default/tftpd-hpa
在该文件中填充如下内容:
# /etc/default/tftpd-hpa TFTP_USERNAME="tftp" TFTP_DIRECTORY="/tftpboot" #tftp服务器在路径,可以根据需要修改 TFTP_ADDRESS="0.0.0.0:69"TFTP_OPTIONS="-l -c -s" |
(4)配置/etc/xinetd.d/tftp
若该路径下没有tftp文件,则创建。在该文件中填充如下内容:
service tftp { socket_type = dgram wait = yes disable = no user = root protocol = udp server = /usr/sbin/in.tftpd server_args = -s /tftpboot #配置服务器的文件的存放位置 #log_on_success += PID HOST DURATION #log_on_failure += HOST per_source = 11 cps =100 2 flags =IPv4 } |
(5)修改文件夹权限
修改存放服务器文件的文件夹的权限,一般设置为最宽松的权限。运行如下命令:
sudo mkdir /tftpboot //创建tftpboot文件夹,用于存放服务器文件 sudo chmod 777 /tftpboot //修改文件夹权限 |
(6)重启服务
重新启动服务,上述配置即可生效。运行如下命令:
sudo service tftpd-hpa restart sudo /etc/init.d/xinetd reload sudo /etc/init.d/xinetd restart |
3. 测试
(1)本地测试
在Ubuntu本地环境下,测试tftp服务器能否工作。
1)在/tftpboot目录下创建一个file.c文件;
2)在另外的目录下,在Ubuntu终端下运行“ sudo tftp localhost”命令,进入到tftp命令符下;
3)在tftp命令符下,运行命令“get file.c”,若无错误提示,则成功从tftp服务器获取file.c文件;
4)在tftp命令符下,运行命令“put file”,即可将该文件上传至tftp服务器中。
(2)下载测试
在开发板的uboot终端下,从Ubuntu的tftp服务器获取内核镜像。
1)在uboot终端,运行tftpboot命令,从tftp服务器下载内核镜像。
tftpboot命令格式:tftpboot 30008000 192.168.1.100:zImage。不同版本其命令格式可能会有差异,可以通过help命令查看。
tftpboot 30008000 192.168.1.100:zImage //从tftp服务器下载zImage到DDR中的0x30008000地址处 |
2)运行“bootm 30008000”,即可成功启动内核。