bravegen 发表于 2012-10-21 00:59:52

DM9000AEP 在U-BOOT中能识别ID但PING不通主机

我参照utu2440开发板做的板子,网络部分是DM9000AEP+HS9016网络变压器+RJ45 LED插座,在U-BOOT中能识别DM9000AEP的ID,RJ45插座的灯也闪,但PING不通主机,用抓包工具可以抓到DM9000AEP发出到主机的ARP包,但DM9000AEP收不到主机返回的应答包,所以PING不通,也不能TFTP,我跟踪进U-BOOT源码,driver/net/dm9000x.c中的eth_rx函数中:
/* Check packet ready or not, we must check
    the ISR status first for DM9000A */
if (!(DM9000_ior(DM9000_ISR) & 0x01)) /* Rx-ISR bit must be set. */
return 0;
加了打印后发现eth_rx每次都是在这里返回,ISR(接收中断寄存器)始终置不了位,路过的帮忙指点

bravegen 发表于 2012-10-23 16:48:22

我怀疑是芯片有问题,换了芯片后板子每次重启可以PING通一两次,之后再PING就像死机了,偶尔PING通时能收到ARP和ICMP应答,但不能TFTP下载BIN文件,量了49.9欧电阻都是好的,我怀疑是不是板子布线有问题,我用的自动布线,没有走差分线等长布线,会不会是这个原因?

fishOnFly 发表于 2012-12-11 15:11:34

bravegen 发表于 2012-10-23 16:48 static/image/common/back.gif
我怀疑是芯片有问题,换了芯片后板子每次重启可以PING通一两次,之后再PING就像死机了,偶尔PING通时能收到 ...

楼主问题解决没有啊?我的也是,发送正常,接受几乎不能,初始化完成后,开始能接受几个包,接着喝你一样ISR的bit0总不置位...
另外:
    我用的轮询, 没开IMR_bit0...

hui1011 发表于 2012-12-12 12:00:44

dm9000 的确有批次问题,我再09年用的一批 也出现类似问题,最好找可靠的再做排除

keshipt 发表于 2012-12-12 12:45:00

bravegen 发表于 2012-10-23 16:48 static/image/common/back.gif
我怀疑是芯片有问题,换了芯片后板子每次重启可以PING通一两次,之后再PING就像死机了,偶尔PING通时能收到 ...

从给你描述的现象看,应该是PCB布线的问题,DM9000对阻抗还是有一定要求的,差分和阻抗匹配不能省,否则就算能PING通,也不一定稳定,之前有碰到因PCB布线造成带宽只能跑到30M/SEC,也会出现偶尔PING不通的现象,达不到应用的性能,建议楼主调整一下差分线上的电阻,看看是否有改善,最后还是建议楼主把差分和阻抗做好

keshipt 发表于 2012-12-12 12:52:09

fishOnFly 发表于 2012-12-11 15:11 static/image/common/back.gif
楼主问题解决没有啊?我的也是,发送正常,接受几乎不能,初始化完成后,开始能接受几个包,接着喝你一样 ...

如果PCB没有做好差分阻抗匹配也会出现这样的现象,比较简单的验证方法是适当调整差分电阻,也就是那个50欧电阻,增大或者减少一些看看是否改善,阻抗误差不大的情况下可以看到效果

zky26 发表于 2014-12-24 15:54:39

bravegen 发表于 2012-10-23 16:48
**** 作者被禁止或删除 内容自动屏蔽 ****

会的,,顺便问一下,楼主问题现在解决了吗?

maoxue121225 发表于 2015-1-27 11:59:45

同问这个问题{:titter:}
页: [1]
查看完整版本: DM9000AEP 在U-BOOT中能识别ID但PING不通主机