u-boot-1.1.6 DM9000ep网卡ping不通
环境变量:
u-boot # print
bootargs=root=/dev/mtdblock/2 init=/linuxrc console=ttySAC0,115200
bootcmd=nand read 0x33000000 0x100000 0x300000; bootm 0x33000000
bootdelay=3
baudrate=115200
ethaddr=08:00:3e:26:0a:5b
ipaddr=192.168.2.9
serverip=192.168.2.30
netmask=255.255.255.0
stdin=serial
stdout=serial
stderr=serial
现在ping的时候网卡灯不亮,用抓包工具也没抓到包,用示波器测网卡芯片与网络变压器之间收发都有信号,网络变压器与RJ45之间也有信号。我打开了debug,ping包信息如下:
u-boot # ping 192.168.2.30
eth_halt
phy_write(reg:0, value:32768)
eth_init()
resetting
dm9000 i/o: 0x8000300, id: 0x90000a46
phy_read(3): 32768
MAC: 08:00:3e:26:0a:5b
08:00:3e:26:0a:5b:
sending ARP for 1e02a8c0
ARP broadcast 1
eth_send: length: 42
Send: 02x: ff ff ff ff ff ff 08 00
Send: 02x: 3e 26 0a 5b 08 06 00 01
Send: 02x: 08 00 06 04 00 01 08 00
Send: 02x: 3e 26 0a 5b c0 a8 02 09
Send: 02x: 00 00 00 00 00 00 c0 a8
Send: 02x: 02 1e
transmit done
ARP broadcast 2
eth_send: length: 42
Send: 02x: ff ff ff ff ff ff 08 00
Send: 02x: 3e 26 0a 5b 08 06 00 01
Send: 02x: 08 00 06 04 00 01 08 00
Send: 02x: 3e 26 0a 5b c0 a8 02 09
Send: 02x: 00 00 00 00 00 00 c0 a8
Send: 02x: 02 1e
transmit done
eth_halt
phy_write(reg:0, value:32768)
ping failed; host 192.168.2.30 is not alive
u-boot #
请问这可能是什么原因?
帮顶下,以前遇到过在Uboot就是你这种现象,但是在WINCE下却是正常的,希望你能得到正确的解答
你现在是在目标机上ping主机吗? 能否在主机上ping目标机试试。或者换个交叉网线试试?
谢谢,我是在目标机上ping主机。据说u-boot不支持从主机ping它。交叉线也试了,没一点反应。
在dm9000x.c,eth_rx函数中
//DM9000_ior(DM9000_MRRH); //别人说这里添一下,万事OK,但我加了也不行
//DM9000_ior(DM9000_MRRL);
DM9000_ior(DM9000_MRCMDX); /* Dummy read */
rxbyte = DM9000_inb(DM9000_DATA); /* Got most updated data */
if (rxbyte == 0)
return 0;
程序就是在这里返回了,可为什么会返回0呢? 谢谢。
可能是底层芯片对应答的解析不正确,这个发出的也不是PING而只是ARP请求,我搞网卡驱动时也遇到过这个问题
1,底层芯片 是dm9000ep本身吗?我想不通的是有3块可以用,7块不通。除了网卡芯片,别的环境都一样。
2,为什么我用示波器能量到波形呢?谢谢大家。
昨天发邮件给techsupport@davicom.com.tw 那人一直问我在哪买的,呵呵,难道这货还有山寨?到现在他们也没给个解决方法,也没个答复真是伤心。
这些天联系到了一些dm9000的代理商,据说dm9000e现在货紧张,有好多假货,不知道是真是假?我的问题还是没有解决。大家帮帮忙吧。
把我这些日子调试DM9000的经验告诉你把!最近项目也用DM9000EP,在北京中发买了几个芯片,焊完后就一个能用,把我给郁闷的,最后从原理图开始分析,没问题,再分析PCB布线,发现差分线没有走好,但是也不至于完全不通啊,连灯都不亮,还有就是起码有一个板子是好的啊!接着自己对这UBOOT写了个没有操作系统的DM90000的驱动,读VID和PID都没有问题,值为0X90000A46,这说明总线那块没有问题,接着写程序发现在UBOOT里的set_PHY_mode函数里的DM9000_iow(DM9000_GPCR, 0x01);/* Let GPIO0 output */和DM9000_iow(DM9000_GPR, 0x00); /* Enable PHY */之后就DM9000的PHY就应该起来了,插上路由器上的网口上测量RX和TX的时候应该是会有波形变化的,我的开发板就是这样没有问题,可我的板子死活不行,这我就彻底郁闷了!再次怀疑我的布线有问题,接着开始割线飞线折腾了好久好久还是不行,面对老板的催促我都无语了,最后我破釜沉舟把开发板上的DM9000EP拆下来焊我板子上,上电发现一切OK,OH MY GOD!该死的中发,该死的奸商!!我的问题就是这样,希望对你有帮助!!!
引用: 引用 14 楼 bieahoff 的回复:
把我这些日子调试DM9000的经验告诉你把!最近项目也用DM9000EP,在北京中发买了几个芯片,焊完后就一个能用,把我给郁闷的,最后从原理图开始分析,没问题,再分析PCB布线,发现差分线没有走好,但是也不至于完全不通啊,连灯都不亮,还有就是起码有一个板子是好的啊!接着自己对这UBOOT写了个没有操作系统的DM90000的驱动,读VID和PID都没有问题,值为0X90000A46,这说明总线那块没……
谢谢 bieahoff。我的问题也是在那放着,没有解决,我也怀疑是dm9000ep的问题。共同学习共同进步。
DAVICOM市面上是有水货的
楼主,你好。DM9000EP确实是有很多问题片子,渠道不正规的。有什么问题,可以问问我。QQ:1173835223