三、网络文件系统命令
在进行下列命令时要将开发板的 ENET接口和电脑或者路由器连接
建议开发板和主机 PC 都连接到同一个路由器上
#环境变量设置命令
setenv ipaddr 192.168.1.50
setenv ethaddr b8:ae:1d:01:00:00
setenv gatewayip 192.168.1.1
setenv netmask 255.255.255.0
setenv serverip 192.168.1.253
saveenv
注意,网络地址环境变量的设置要根据自己的实际情况,确保
Ubuntu
主机和开发板的
IP地址在同一个网段内,比如我现在的开发板和电脑都在 192.168.1.0
这个网段内,所以设置开发板的 IP
地址为
192.168.1.50
,我的
Ubuntu
主机的地址为
192.168.1.253
,因此
serverip
就192.168.1.253。
ethaddr
为网络
MAC
地址,是一个
48bit
的地址,如果在同一个网段内有多个开发板的话一定要保证每个开发板的 ethaddr
是不同的,否则通信会有问题!
1
、
ping
命令
通过
ping
命令就可以验证,直接 ping
服务器的
IP
地址即可,比如我的服务器
IP
地址为
192.168.1.253
,
ping 192.168.1.253
注意!只能在
uboot
中
ping
其他的机器,其他机器不能
ping uboot
,因为
uboot
没有对
ping
命令做处理,如果用其他的机器
ping uboot
的话会失败!
2
、
dhcp
命令
dhcp
用于从路由器获取
IP
地址,前提得开发板连接到路由器上的,如果开发板是和电脑
直连的,那么
dhcp
命令就会失效
开发板通过
dhcp
获取到的
IP
地址为
192.168.1.137
。同时在图 30.4.4.3 中可以看到“
warning
:
no boot file name;
”、“
TFTP from server 192.168.1.1
”这样的字样。
这是因为
DHCP
不单单是获取
IP
地址,其还会通过
TFTP
来启动
linux
内核,输入“
? dhcp
”即可查看 dhcp
命令详细的信息
![](https://i-blog.csdnimg.cn/blog_migrate/6fadbba53261762156714bf9f35b115a.png)
3、nfs 命令
使用 uboot 中的 nfs 命令将 Ubuntu 中的文件下载到开发板的 DRAM 中,在使用之前需要开启 Ubuntu 主机的 NFS 服务,并且要新建一个 NFS 使用的目录,以后所有要通过NFS 访问的文件都需要放到这个 NFS 目录中
nfs [loadAddress] [[hostIPaddr:]bootfilename]
准备好以后就可以使用 nfs 命令来将 zImage 下载到开发板 DRAM 的 0X80800000 地址处
nfs 80800000 192.168.1.253:/home/zuozhongkai/linux/nfs/zImage
命令
md.b
来查看前
0x100
个字节的数据
![](https://i-blog.csdnimg.cn/blog_migrate/22fe1c075a0d64a8ff490eab6c47981d.png)
4
、
tftp
命令
tftp
命令的作用和
nfs
命令一样,都是用于通过网络下载东西到
DRAM
中,只是
tftp
命令
使用的
TFTP
协议,
Ubuntu
主机作为
TFTP
服务器。
(1)需要在
Ubuntu
上搭建
TFTP
服务器,需要安装 tftp-hpa 和 tftpd-hpa
sudo apt-get install tftp-hpa tftpd-hpa
sudo apt-get install xinetd
(2)TFTP 也需要一个文件夹来存放文件,在用户目录下新建一个目录
mkdir /home/qkj/linux/tftpboot
chmod 777 /home/qkj/linux/tftpboot
注意一定要给权限不然uboot无法从中获取文件
(3)配置
tftp
,安装完成以后新建文件
/etc/xinetd.d/tftp
,如果没有
/etc/xinetd.d
目录的话自行创建
vi /etc/xinetd.d/tftp
tftp内容
server tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /home/zuozhongkai/linux/tftpboot/
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
sudo service tftpd-hpa start#启动 tftp 服务
(4)
vi /etc/default/tftpd-hpa
修改内容至如下
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/zuozhongkai/linux/tftpboot"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="-l -c -s"
sudo service tftpd-hpa restart #重启 tftp 服务器
(5)将 zImage 镜像文件拷贝到 tftpboot 文件夹中,并且给予 zImage 相应的权限
cp zImage /home/qkj/linux/tftpboot/
cd /home/qkj/linux/tftpboot/
chmod 777 zImage
(6)tftp 命令格式:
tftpboot [loadAddress] [[hostIPaddr:]bootfilename]
loadAddress 是文 件在 DRAM 中的 存放 地址 ,
[[hostIPaddr:]bootfilename]是要从 Ubuntu 中下载的文件。
但是和nfs命令的区别:tftp 命令不需要输入文件在Ubuntu 中的完整路径,只需要输入文件名即可
tftp 80800000 zImage