uboot DM9000网卡移植--提示开发板ping不同虚拟服务器的ip

时间:2023-01-16 17:13:31

今天按照国嵌视屏,进行uboot--网卡驱动的移植,对移植过程中的几点疑问记录如下:


1、修改DM9000网卡的地址

uboot DM9000网卡移植--提示开发板ping不同虚拟服务器的ip

通过查看原理图,dm9000链接的是arm的bank4,即地址应该是0x20000000,什么会是0x20000300呢??(原理图如下)

uboot DM9000网卡移植--提示开发板ping不同虚拟服务器的ip


2、修改完后,编译后移植uboot,应该支持网卡dm9000,但是发现开发板子不能ping同虚拟机服务器的ip

Mini2440 # set serverip 192.168.189.128 // 设置好服务器的ip
Mini2440 # set ipaddr 192.168.189.120   // 设置好开发板子的ip
Mini2440 # printenv
bootdelay=3
baudrate=115200
netmask=255.255.255.0
stdin=serial
stdout=serial
stderr=serial
serverip=192.168.189.128
ipaddr=192.168.189.120


Environment size: 139/65532 bytes
Mini2440 # ping 192.168.189.128
dm9000 i/o: 0x20000300, id: 0x90000a46 
DM9000: running in 16 bit mode
MAC: 00:00:00:00:00:00
*** ERROR: `ethaddr' not set
ping failed; host 192.168.189.128 is not alive
Mini2440 # set ethaddr 10:23:45:67:89:ab  // 设置好网卡的mac地址
Mini2440 # print
bootdelay=3
baudrate=115200
netmask=255.255.255.0
stdin=serial
stdout=serial
stderr=serial
serverip=192.168.189.128
ipaddr=192.168.189.120
ethaddr=10:23:45:67:89:ab


Environment size: 165/65532 bytes
Mini2440 # ping 192.168.189.128  // 插上交叉网线后,ping服务器ip
dm9000 i/o: 0x20000300, id: 0x90000a46 
DM9000: running in 16 bit mode
MAC: 10:23:45:67:89:ab
ping failed; host 192.168.189.128 is not aliv  // 发现提示没有服务

疑问:

(1)、难道是虚拟机的tftp服务器没有开启的原因??

查询虚拟机的tftp是否开启

[root@localhost u-boot-2008.10]# netstat -a |grep tftp
udp        0      0 *:tftp                      *:*                                     
[root@localhost u-boot-2008.10]# 

这里已经提示虚拟机的服务器已经开启了,所以不是虚拟服务器tftp没有开启的原因

(2)、查询了网上资料,他们说可能是虚拟机的网络配置问题,网络配置为桥接,电脑能够ping通虚拟的ip??

pc能够ping通虚拟机的ip,网络也设置为桥接方式,结果:开发板还是不能ping通虚拟机ip

(3)、自己用开发板子的uboot,设置完成后,结果发现板子也是不能ping通虚拟机服务器,现在可以确定不是uboot移植的错误,导致ping不同

追问:1、难道,网线不是交叉线的原因??2、难道是虚拟机本身的问题??


现在的问题还真的暂时解决不了,暂时搁下,记录下来,不知道他人是否遇到此类问题,请提供帮助!!


 3、问题解决办法

买回来个路由器,把开发板子交叉线 和 电脑的网线都接在路由器的lan口,形成局域网

情况1:

虚拟机:192.168.189.128

主机:192.168.8.100

虚拟机映射出的两个虚拟的ip地址:

vmnet8:192.168.189.1

vmnet1:192.168.83.1

结果 :虚拟机 和 pc机 之间可以互相ping通(虚拟采用的 nat 连接方式)


情况2:

修改虚拟机的ip地址为:192.168.8.89,和pc机:192.168.8.100在同一个网段内

结果:虚拟机 和 pc机 之间ping(虚拟机采用的是nat连接方式,而不是桥接方式)

设置linux的ip的方法:

下面我们来举个例子如何实现Linux环境下设置IP地址。

  #ifconfig eth0 192.168.0.1  或者  修改/etc/sysconfig/network-scripts/下的ifcfg-eth0

  #vi /etc/syssconfig/network-scripts/ifcfg-eth0

  DEVICE=eth0

  BOOTPROTO=static    // 设置为静态ip地址方式

  HWADDR= ;这里是你网卡的物理地址,通常检测到的网卡你就不用输入了

  ONBOOT=yes

  IPADDR=192.168.0.1

  NETMASK=255.255.255.0

  NETWORK=192.168.1.0

  BROADCAST=192.168.1.255

  GATEWAY= ;这里输入你的网关,路由器的IP地址

  保存退出

  #service network restart


解决办法:
虚拟机菜单栏——>vm(虚拟机)——>setting(设置)——>networkAdapter:bridged就可以了,
注意:设置为NAT网络连接方式是不行的

这样子 开发板:192.168.8.80,pc机:192.168.8.100,虚拟机:192.168.8.90  都在同一个网段内的ip地址,现在开发板、虚拟机、pc机之间可以互相ping通了。


Mini2440 # set serverip 192.168.8.90  // 设置虚拟机tftp服务器的ip
Mini2440 # printenv
bootdelay=3
baudrate=115200
netmask=255.255.255.0
name=TQ2440
ethaddr=01:23:45:67:89:ab
ipaddr=192.168.8.80
stdin=serial
stdout=serial
stderr=serial
serverip=192.168.8.90
Environment size: 171/65532 bytes


Mini2440 # ping 192.168.8.90    //  ping一下虚拟机的服务器
dm9000 i/o: 0x20000300, id: 0x90000a46 
DM9000: running in 16 bit mode
MAC: 01:23:45:67:89:ab
host 192.168.8.90 is alive    //  采用桥接方式后,既可以ping通虚拟机啦




新问题:(DHCP获取的ip地址和默认的路由器的网关不在同一个网段内)

但是问题又来了,路由器的当用DHCP自动获取ip地址时(路由器连接上一级路由器,wan端ip地址设置为动态获取ip:192.168.1.111,lan端ip地址设置为192.168.8.1),当pc机使用自动获取ip地址的方式获取ip时:却出现了这么奇葩的问题:


uboot DM9000网卡移植--提示开发板ping不同虚拟服务器的ip


uboot DM9000网卡移植--提示开发板ping不同虚拟服务器的ip


也就是根本访问不了路由器的web界面,这问题就很奇怪,一开始我认为是路由器的问题,刚买了tp-link个路由器,但是发现了面没有说明书,以为是盗版的。急匆匆的拿去店里面去找老板理论,但是在老板店里面,电脑在没有虚拟机的情况之下,DHCP自动获取ip地址还是在192.168.8.1的正常范围内啊,这问题就是让我纠结啦,难道是虚拟机设置的影响???虚拟机网络设置的setting中,网络桥接和nat连接有什么样的区别???为什么虚拟机nat连接时,设置虚拟机和pc机在同一个网段内,却ping不通pc机,设置为网络桥接后,就可以ping通了呢????


猜测:

难道nat连接方式是把虚拟机当作内网??所以你在和pc机同一网络段下是ping不通的,桥接方式是把虚拟机和pc机当成一个局域网,所以就可以ping通了。现在这样子的猜测感觉很和道理。。。。。。。。。。。。

尝试:得重新启动电脑一下,看看dhcp获取的ip地址是否正常??????


新问题的解决:

原来是因为,

局域网中还有另一台DHCP服务器,且他的接入口为192.168.230.X的地址,这台DHCP服务器,就是虚拟机,也就是虚拟机在作怪。

Edit-->Virtual Network Editor

 
 


把上述的  VMnet0 这个能够DHCP分配给电脑ip的删除掉,然后再自动获取ip地址时,pc机就能够获取到路由器的ip地址了,且和路由器在同一个网段内。

到这里,经过了一天的不断尝试和排除,终于找到了问题的根源,原来不是路由器的问题,tp-link路由器还是比较稳定的,而是对电脑的虚拟机认识不够,导致出现的问题,在自己认知的范围内,特别感到奇葩,原来其实就是那么一回事。。。。。。。。。~~~~~~~~~~