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依然显示网线电缆没有连接好。
请各位大侠支招,该从哪里入手调试?? 顶起并且是默默的 ARM9与DM9000硬件以8BIT方式相连的。这个不多呀。源代码BSP配置对吗?用的DM9000 100PIN的?看提示是中断线配置有问题,可以查查。 回复【2楼】scapaflow
-----------------------------------------------------------------------
可是我的电路图上是16位数据线啊,我也没搞清呢,抄得板子…… 哎 很费事,自己ping 自己可以通,连接PC 就连不上,并且 中断引脚 一直是低 这个可以在BSP相关代码中查看到配置情况,一般默认是16BIT,中断线用的是什么?EINx?你可以对一下看与硬件是否一致,电路硬件连接16位线不影响8BIT模式,但可根据情况,修改resource代码,相关的寄存器资料看下,这个确实比较磨人,我是调了2个星期才好使,居然是GCSX选择线硬件画错了。自己能PING通自己说明不了问题。我只能记住这么多了。不行,周一帮你看下吧。祝好运。 回复【5楼】scapaflow
-----------------------------------------------------------------------
老兄 留个QQ号吧 我的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); 回复【7楼】scapaflow
-----------------------------------------------------------------------
现在是把网口和PC连接起来 PC显示无连接 部分调试信息:
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() 你用的ARM9型号和我的不太一样。你应该是中断那里有问题,才显示连不上。 回复【10楼】scapaflow
-----------------------------------------------------------------------
DM9000中断引脚 一直为低这是什么原因? Interrupt:107 这个是什么中断? 额…… 这个中断我也不知道啊 #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,你看下你的是多少,你根据你的芯片型号查源代码吧。这个会有所不同的。 回复【14楼】scapaflow
-----------------------------------------------------------------------
我用的是EINT7软件应该没问题,我一直用的这个软件 楼主可以先不用管中断,可以在UBOOT里试下,这种情况一般是没有正确识别出来16位,其原因是那个CMD的信号没有打过去,也就是说你的DATA和IO的地址确定下?也就是CMD到底连接到那个ADDR上了,偏移量要找对,在就是NGCS是连接的哪个?可以确定出BANK地址,地址都找对,然后看下你CPU的PDF文档,怎么设置寄存器的位宽和时序问题,保证能通信就OK了。 一般网络下载的DM9000驱动应该都可以的。
如果手里有示波器或者逻辑分析仪,调试会很轻松的,电脑识别不出来网卡,证明网卡根本就没工作。
祝好运,当初我也遇到该问题,后来查板子,就是PCB和原理图对不上,CMD那个脚连接有问题,所以位宽始终不对。呵呵 回复【17楼】kfw23
-----------------------------------------------------------------------
老兄哪个CMD信号?我现在能识别出是16位了。 回复【17楼】kfw23
-----------------------------------------------------------------------
我有示波器但是不知道测哪 第1:要确定原理图和PCB一致, 多看下DM9000的PDF和CPU的PDF, 就知道测哪里了。 回复【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 回复【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
恩,估计可以了,你试试吧,继续 ping 下主机,DEBUG方式看下输出,然后运行下 TFTP的,没问题的话几乎就可以用上层使用了 回复【24楼】kfw23
-----------------------------------------------------------------------
但是奇怪的是 我用网线和PC 连上之后 PC 一直显示无连接啊 DM9000,不敢用! 回复【26楼】kingreat 爱泰益科
-----------------------------------------------------------------------
为什么不敢用呢? 顶起默默的 我上次调的时候,遇到了一个reset引脚的问题,搞了两三天才发现。用示波器看一下几个关键的引脚上信号是否正确。调这些,先查信号,才查软件。 回复【31楼】ARMjerry
又一个被dm9000残害的,楼主啊,很多人遇到过这种问题,然后换一个批号不一样的就解决了。珍惜生命,远离dm9000!
-----------------------------------------------------------------------
我也是被DM9000受伤过的人。虽然是淘宝上面买的,后来代理说可能是怎么的。买正品就不行,但至今仍有阴影。 还是用aep或是cep把,9000太贵而且太旧了,而且批次不同问题很多,基本查清楚不是布线问题基本是批次问题,不要怀疑了。自己已经吃亏了、、、、、、 此贴要顶 此贴要顶 严重建议:
MICREL KSZ8851SNL 性能、价格比台系芯片强很多,特别插拔不能link的bug不存在。另外SPI接口,硬件线路及软件驱动都容易。
WIZNET W5500 ,硬件集成TCP/IP协议栈。不要哪么费心费力去调试uIP lwIP之类的东东,硬件SPI接口,线路简单。
还有SMSC的相关芯片,性能超强。某些台系芯片在系统上电启动之后再插网线无法LINK这种低级bug要小心。
哪些用台系芯片的,要好好考虑一下芯片BUG,及原厂及代理商是否能出质量承诺书,及硬件软件的复杂程度。
芯片软复位100次检测link是否可以成功 ? 系统上电运行之后,插入网线检测是否可以link ? 静电打击是否可以自恢复 ?用台系网络芯片要小心。
页:
[1]