xuefeihumei 发表于 2011-12-9 17:23:55

DM9000网卡问题 【紧急求援】

前段时间看着别人的原理图画了一个DM9000和ARM9的板子,现在DM9000连不通,现象如下:
上电可以读取DM9000:
dm9000 i/o: 0x30000000, id: 0x90000a46
DM9000: running in 8 bit mode
MAC: 12:34:56:78:90:12
但是会输出这一条信息:dm9000 dm9000.0: WARNING: no IRQ resource flags set.eth0: link down
用ifconfig 看一下:
eth0      Link encap:EthernetHWaddr 12:34:56:78:90:12
          inet addr:192.168.1.58Bcast:192.168.1.255Mask:255.255.255.0
          UP BROADCAST MULTICASTMTU:1500Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)TX bytes:0 (0.0 B)
          Interrupt:107 Base address:0x2000
并且用网线和PC连接时,PC依然显示网线电缆没有连接好。
请各位大侠支招,该从哪里入手调试??

xuefeihumei 发表于 2011-12-10 08:31:07

顶起并且是默默的

scapaflow 发表于 2011-12-10 11:26:07

ARM9与DM9000硬件以8BIT方式相连的。这个不多呀。源代码BSP配置对吗?用的DM9000 100PIN的?看提示是中断线配置有问题,可以查查。

xuefeihumei 发表于 2011-12-10 16:18:53

回复【2楼】scapaflow
-----------------------------------------------------------------------

可是我的电路图上是16位数据线啊,我也没搞清呢,抄得板子……

xuefeihumei 发表于 2011-12-10 16:46:16

哎 很费事,自己ping 自己可以通,连接PC 就连不上,并且 中断引脚 一直是低

scapaflow 发表于 2011-12-10 17:32:16

这个可以在BSP相关代码中查看到配置情况,一般默认是16BIT,中断线用的是什么?EINx?你可以对一下看与硬件是否一致,电路硬件连接16位线不影响8BIT模式,但可根据情况,修改resource代码,相关的寄存器资料看下,这个确实比较磨人,我是调了2个星期才好使,居然是GCSX选择线硬件画错了。自己能PING通自己说明不了问题。我只能记住这么多了。不行,周一帮你看下吧。祝好运。

xuefeihumei 发表于 2011-12-12 09:04:37

回复【5楼】scapaflow
-----------------------------------------------------------------------
老兄 留个QQ号吧

scapaflow 发表于 2011-12-12 09:16:22

我的BSP部分设置如下,你对下,其实你用的是16BIT,网上资料还是挺多的。多试试吧。
static struct resource s3c_dm9000_resource[] = {
       = {
          .start = S3C24XX_PA_DM9000, //0x20000000,   //对应电路图nGCS4
          .end   = S3C24XX_PA_DM9000+0x3, //0x20000003,
          .flags = IORESOURCE_MEM,
       },
       = {
          .start = S3C24XX_PA_DM9000+0x4, //0x20000004,
          .end   = S3C24XX_PA_DM9000+S3C24XX_SZ_DM9000-1, //0x20000007, //   0x3f
          .flags = IORESOURCE_MEM,
       },
       = {
          .start = IRQ_EINT12,// wht modify it to adapt my schematic
          .end   = IRQ_EINT12,
          .flags = IORESOURCE_IRQ|IRQF_TRIGGER_HIGH,
       }

};
static struct dm9000_plat_data s3c_device_dm9000_platdata = {
   .flags=DM9000_PLATF_8BITONLY,
   // wht modify it to adapt to my needs :8 bits
};
struct platform_device s3c_device_dm9000 = {
   .name= "dm9000",
   .id= 1,
   .num_resources= ARRAY_SIZE(s3c_dm9000_resource),
   .resource= s3c_dm9000_resource,
   .dev= {
      .platform_data = &s3c_device_dm9000_platdata,
   }
};
EXPORT_SYMBOL(s3c_device_dm9000);

xuefeihumei 发表于 2011-12-12 09:18:44

回复【7楼】scapaflow
-----------------------------------------------------------------------

现在是把网口和PC连接起来 PC显示无连接

scapaflow 发表于 2011-12-12 09:32:24

部分调试信息:
dm9000 Ethernet Driver
dm9000: dm9000_probe()dm9000: dm9000x: resetting
eth1: dm9000 at c486c000,c4e00004 IRQ 56 MAC: 00:e0:3d:f4:dd:f7
dm9000: entering dm9000_open
dm9000: dm9000x: resetting
dm9000: entering dm9000_init_dm9000
dm9000: dm9000_hash_table()
eth1: link down
dm9000: dm9000_hash_table()
dm9000: dm9000_hash_table()
dm9000: dm9000_hash_table()
dm9000: dm9000_hash_table()

scapaflow 发表于 2011-12-12 09:33:34

你用的ARM9型号和我的不太一样。你应该是中断那里有问题,才显示连不上。

xuefeihumei 发表于 2011-12-12 09:35:18

回复【10楼】scapaflow
-----------------------------------------------------------------------

DM9000中断引脚 一直为低这是什么原因?

scapaflow 发表于 2011-12-12 09:35:32

Interrupt:107 这个是什么中断?

xuefeihumei 发表于 2011-12-12 09:40:19

额…… 这个中断我也不知道啊

scapaflow 发表于 2011-12-12 09:47:48

#define IRQ_EINT12   S3C2410_IRQ(40)   //56

= {
          .start = IRQ_EINT12,// wht modify it to adapt my schematic
          .end   = IRQ_EINT12,
          .flags = IORESOURCE_IRQ|IRQF_TRIGGER_HIGH,
       }
我用的是EINT12,对应的中断号是56,你看下你的是多少,你根据你的芯片型号查源代码吧。这个会有所不同的。

xuefeihumei 发表于 2011-12-12 09:57:14

回复【14楼】scapaflow
-----------------------------------------------------------------------

我用的是EINT7软件应该没问题,我一直用的这个软件

kfw23 发表于 2011-12-12 12:05:38

楼主可以先不用管中断,可以在UBOOT里试下,这种情况一般是没有正确识别出来16位,其原因是那个CMD的信号没有打过去,也就是说你的DATA和IO的地址确定下?也就是CMD到底连接到那个ADDR上了,偏移量要找对,在就是NGCS是连接的哪个?可以确定出BANK地址,地址都找对,然后看下你CPU的PDF文档,怎么设置寄存器的位宽和时序问题,保证能通信就OK了。    一般网络下载的DM9000驱动应该都可以的。

如果手里有示波器或者逻辑分析仪,调试会很轻松的,电脑识别不出来网卡,证明网卡根本就没工作。

祝好运,当初我也遇到该问题,后来查板子,就是PCB和原理图对不上,CMD那个脚连接有问题,所以位宽始终不对。呵呵

xuefeihumei 发表于 2011-12-12 13:27:47

回复【17楼】kfw23
-----------------------------------------------------------------------

老兄哪个CMD信号?我现在能识别出是16位了。

xuefeihumei 发表于 2011-12-12 13:31:40

回复【17楼】kfw23
-----------------------------------------------------------------------

我有示波器但是不知道测哪

kfw23 发表于 2011-12-12 15:38:49

第1:要确定原理图和PCB一致, 多看下DM9000的PDF和CPU的PDF, 就知道测哪里了。

xuefeihumei 发表于 2011-12-14 10:11:28

回复【20楼】kfw23
-----------------------------------------------------------------------

读到dm9000的id 和 mac 是不是代表 dm9000已经工作了?
dm9000 i/o: 0x30000000, id: 0x90000a46
DM9000: running in 16 bit mode
MAC: 12:34:56:78:90:12

xuefeihumei 发表于 2011-12-14 10:11:46

回复【3楼】xuefeihumei
-----------------------------------------------------------------------

读到dm9000的id 和 mac 是不是代表 dm9000已经工作了?
dm9000 i/o: 0x30000000, id: 0x90000a46
DM9000: running in 16 bit mode
MAC: 12:34:56:78:90:12
 

kfw23 发表于 2011-12-14 17:10:27

恩,估计可以了,你试试吧,继续

kfw23 发表于 2011-12-14 17:11:41

ping 下主机,DEBUG方式看下输出,然后运行下 TFTP的,没问题的话几乎就可以用上层使用了

xuefeihumei 发表于 2011-12-14 17:13:12

回复【24楼】kfw23
-----------------------------------------------------------------------

但是奇怪的是 我用网线和PC 连上之后 PC 一直显示无连接啊

kingreat 发表于 2011-12-14 18:21:41

DM9000,不敢用!

xuefeihumei 发表于 2011-12-15 08:36:49

回复【26楼】kingreat 爱泰益科
-----------------------------------------------------------------------

为什么不敢用呢?

xuefeihumei 发表于 2011-12-16 08:48:29

顶起默默的

pilgrim_kevin 发表于 2011-12-16 14:51:37

我上次调的时候,遇到了一个reset引脚的问题,搞了两三天才发现。用示波器看一下几个关键的引脚上信号是否正确。调这些,先查信号,才查软件。

ARMjerry 发表于 2011-12-17 23:02:01

aozima 发表于 2011-12-17 23:25:51

回复【31楼】ARMjerry
又一个被dm9000残害的,楼主啊,很多人遇到过这种问题,然后换一个批号不一样的就解决了。珍惜生命,远离dm9000!
-----------------------------------------------------------------------
我也是被DM9000受伤过的人。虽然是淘宝上面买的,后来代理说可能是怎么的。买正品就不行,但至今仍有阴影。

heiyuu1 发表于 2011-12-17 23:32:53

还是用aep或是cep把,9000太贵而且太旧了,而且批次不同问题很多,基本查清楚不是布线问题基本是批次问题,不要怀疑了。自己已经吃亏了、、、、、、

ARMjerry 发表于 2011-12-18 00:07:54

xuefeihumei 发表于 2011-12-20 11:55:09

此贴要顶

siteter 发表于 2011-12-23 09:41:18

此贴要顶

qftek 发表于 2013-11-18 09:58:16

严重建议:
MICREL KSZ8851SNL 性能、价格比台系芯片强很多,特别插拔不能link的bug不存在。另外SPI接口,硬件线路及软件驱动都容易。

WIZNET W5500 ,硬件集成TCP/IP协议栈。不要哪么费心费力去调试uIP lwIP之类的东东,硬件SPI接口,线路简单。

还有SMSC的相关芯片,性能超强。某些台系芯片在系统上电启动之后再插网线无法LINK这种低级bug要小心。

哪些用台系芯片的,要好好考虑一下芯片BUG,及原厂及代理商是否能出质量承诺书,及硬件软件的复杂程度。

芯片软复位100次检测link是否可以成功 ? 系统上电运行之后,插入网线检测是否可以link ? 静电打击是否可以自恢复 ?用台系网络芯片要小心。
页: [1]
查看完整版本: DM9000网卡问题 【紧急求援】