DM9000驱动在友善mini2440开发板上加载成功,但启动设备时出现 WARNING: no IRQ resource flags set.

Gdatasheet 2008-12-24 02:36:58

NET: Registered protocol family 1
NetWinder Floating Point Emulator V0.97 (extended precision)
JFFS2 version 2.2. (NAND) (SUMMARY) © 2001-2006 Red Hat, Inc.
msgmni has been set to 118
io scheduler noop registered
io scheduler anticipatory registered (default)
io scheduler deadline registered
io scheduler cfq registered
Console: switching to colour frame buffer device 30x40
fb0: s3c2410fb frame buffer device
lp: driver loaded but no devices found
ppdev: user-space parallel port driver
Serial: 8250/16550 driver4 ports, IRQ sharing enabled
s3c2440-uart.0: s3c2410_serial0 at MMIO 0x50000000 (irq = 70) is a S3C2440
s3c2440-uart.1: s3c2410_serial1 at MMIO 0x50004000 (irq = 73) is a S3C2440
s3c2440-uart.2: s3c2410_serial2 at MMIO 0x50008000 (irq = 76) is a S3C2440
brd: module loaded
loop: module loaded
DM9000 Ethernet Driver, V1.31
gpfcon:95aa
extint0:2222222
intmsk:6d7e3d8f
eintmask:80
eth0: dm9000e at c485e300,c4860304 IRQ 51 MAC: 00:14:22:b5:29:11 (chip)

usbcore: registered new interface driver rt73usb
Uniform Multi-Platform E-IDE driver
Driver 'sd' needs updating - please use bus_type methods
S3C24XX NAND Driver, (c) 2004 Simtec Electronics
s3c2440-nand s3c2440-nand: Tacls=1, 9ns Twrph0=4 39ns, Twrph1=1 9ns
NAND device: Manufacturer ID: 0xec, Chip ID: 0x76 (Samsung NAND 64MiB 3,3V 8-bit
)
NAND_ECC_NONE selected by board driver. This is not recommended !!
Scanning device for bad blocks
Bad eraseblock 2305 at 0x02404000
Creating 3 MTD partitions on "NAND 64MiB 3,3V 8-bit":
0x00000000-0x00030000 : "bootloader"
0x00050000-0x00250000 : "kernel"
0x00250000-0x03ffc000 : "root"
usbmon: debugfs is not available
s3c2410-ohci s3c2410-ohci: S3C24XX OHCI
s3c2410-ohci s3c2410-ohci: new USB bus registered, assigned bus number 1
s3c2410-ohci s3c2410-ohci: irq 42, io mem 0x49000000
usb usb1: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
usbcore: registered new interface driver libusual
usbcore: registered new interface driver usbserial
usbserial: USB Serial support registered for generic
usbcore: registered new interface driver usbserial_generic
usbserial: USB Serial Driver core
usbserial: USB Serial support registered for FTDI USB Serial Device
usbcore: registered new interface driver ftdi_sio
ftdi_sio: v1.4.3:USB FTDI Serial Converters Driver
usbserial: USB Serial support registered for pl2303
usbcore: registered new interface driver pl2303
pl2303: Prolific PL2303 USB to serial adaptor driver
mice: PS/2 mouse device common for all mice
S3C24XX RTC, (c) 2004,2006 Simtec Electronics
s3c2440-i2c s3c2440-i2c: slave address 0x10
s3c2440-i2c s3c2440-i2c: bus frequency set to 98 KHz
s3c2440-i2c s3c2440-i2c: i2c-0: S3C I2C adapter
S3C2410 Watchdog Timer, (c) 2004 Simtec Electronics
s3c2410-wdt s3c2410-wdt: watchdog inactive, reset disabled, irq enabled
TCP cubic registered
NET: Registered protocol family 17
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
VFS: Mounted root (cramfs filesystem) readonly.
Freeing init memory: 148K
Processing etc/init.d/rcS
mount all
copy /sbin to /tmp ,because it can write
Set some environmet variable

Processing /etc/profile...

Set search library path
Set user Path
Set PS1
Done

Start mdev
inside module rt2570.ko
rt2570: init
usbcore: registered new interface driver rt2570
*****************************************
RootFS by CramFS ,s3c2440
Created by kevin @ 2008.12.14
*****************************************

Processing /etc/profile...

Set search library path
Set user Path
Set PS1
Done

[root@(none) ~]# ls
bin etc linuxr_ proc sys var
boot home linuxrc root tmp
dev lib mnt sbin usr
[root@(none) ~]#
[root@(none) ~]# ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:14:22:B5:29:11
BROADCAST MULTICAST MTU:1500 Metric: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:51 Base address:0xe300


lo Link encap:Local Loopback
LOOPBACK MTU:16436 Metric: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:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

rausb0 Link encap:Ethernet HWaddr 00:12:17:84:AC:C4
BROADCAST MULTICAST MTU:1500 Metric: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)

[root@(none) ~]# ifconfig eth0 up
gpfcon:95aa
extint0:2222222
intmsk:617e3d8f
eintmsk:80
dm9000 dm9000: WARNING: no IRQ resource flags set.



以上是我终端输出的全部内容

现在有个问题
DM9000驱动在友善mini2440开发板上加载成功,但启动设备时出现 WARNING: no IRQ resource flags set.
我用printk跟踪了下,发现在初使化函数dm9000_probe()里面 就出现个怪现像(最初在这里发现问题)---EINTMASK 的第七位不能置0
也就是说不能enable EINT7 ,可是这个DM9000的INT就是接在EINT7 上了(硬件连线我没法改啊)
这导致后面启用设备时,dm9000_open()调用出现WARNING: no IRQ resource flags set。



[root@(none) ~]# ifconfig eth0 up
gpfcon:95aa
extint0:2222222
intmsk:617e3d8f
eintmsk:80
dm9000 dm9000: WARNING: no IRQ resource flags set.


程序运行到这里就没反映了,过几分钟后会出现下面的错误。我想知道为什么EINTMASK的第七位不能清零(其它位都可以),烦请各位帮帮我。dm9000驱动源码,已经附在后面了
[<c0039740>] (s3c_irq_demux_extint4t7+0x0/0xa8) from [<c002d044>] (asm_do_IRQ+0x
44/0x5c)
r4:c03c2350
[<c002d000>] (asm_do_IRQ+0x0/0x5c) from [<c002d824>] (__irq_svc+0x24/0xa0)
Exception stack(0xc2e2bd98 to 0xc2e2bde0)
bd80: 00000000 fb000000
bda0: 00000001 00000000 c03c2a18 00000033 40000013 00000080 00000033 00000000
bdc0: c39bfc80 c2e2be10 c2e2bdbc c2e2bde0 c007320c c0072748 60000013 ffffffff
r7:00000080 r6:00000010 r5:f4000000 r4:ffffffff
[<c007254c>] (setup_irq+0x0/0x248) from [<c007294c>] (request_irq+0xb0/0xcc)
[<c007289c>] (request_irq+0x0/0xcc) from [<c01a8f40>] (dm9000_open+0x16c/0x23c)
[<c01a8dd4>] (dm9000_open+0x0/0x23c) from [<c024839c>] (dev_open+0xa8/0x10c)
[<c02482f4>] (dev_open+0x0/0x10c) from [<c0248a20>] (dev_change_flags+0x98/0x164
)
r5:00000000 r4:c382b800
[<c0248988>] (dev_change_flags+0x0/0x164) from [<c0284cb8>] (devinet_ioctl+0x2f0
/0x708)
r7:bed9ba88 r6:c39fdf00 r5:00000000 r4:ffffff9d
[<c02849c8>] (devinet_ioctl+0x0/0x708) from [<c0286c1c>] (inet_ioctl+0xc0/0xf4)
[<c0286b5c>] (inet_ioctl+0x0/0xf4) from [<c023ac14>] (sock_ioctl+0x1e4/0x244)
[<c023aa30>] (sock_ioctl+0x0/0x244) from [<c00a4f30>] (vfs_ioctl+0x3c/0x84)
r7:00000003 r6:00008914 r5:ffffffe7 r4:c2d1a420
[<c00a4ef4>] (vfs_ioctl+0x0/0x84) from [<c00a51fc>] (do_vfs_ioctl+0x284/0x2a4)
r6:00000000 r5:bed9ba88 r4:c2d1a420
[<c00a4f78>] (do_vfs_ioctl+0x0/0x2a4) from [<c00a525c>] (sys_ioctl+0x40/0x5c)
r7:00000036 r6:00008914 r5:fffffff7 r4:c2d1a420
[<c00a521c>] (sys_ioctl+0x0/0x5c) from [<c002dc40>] (ret_fast_syscall+0x0/0x2c)
r6:00000000 r5:00159dec r4:00159d5c

...全文
2189 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
cc都被占用了 2011-01-19
  • 打赏
  • 举报
回复
waitting for you!
linuxghs 2009-01-22
  • 打赏
  • 举报
回复
解决了问题就是开心啊,呵呵
iwillbeback008 2009-01-17
  • 打赏
  • 举报
回复
听楼主说“eintmask 的问题,好像是设了一个寄存器后解决了。。”,
各位高手能否指点?
iwillbeback008 2009-01-16
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 Gdatasheet 的回复:]
通读那两份驱动代码后
问题成功解决,可以ping 通了

方法今晚写到我blog上去

谢谢大家的关心与支持
[/Quote]
是不是系统在启动时还有其他步骤配置了EINTMASK?
Gdatasheet 2009-01-03
  • 打赏
  • 举报
回复
唉,现在感觉真好,看到seq一个不少,心里舒坦多了


64 bytes from 192.168.3.1: seq=0 ttl=64 time=4.423 ms
64 bytes from 192.168.3.1: seq=1 ttl=64 time=0.121 ms
64 bytes from 192.168.3.1: seq=2 ttl=64 time=0.121 ms
64 bytes from 192.168.3.1: seq=3 ttl=64 time=0.121 ms
64 bytes from 192.168.3.1: seq=4 ttl=64 time=0.121 ms
64 bytes from 192.168.3.1: seq=5 ttl=64 time=0.118 ms
64 bytes from 192.168.3.1: seq=6 ttl=64 time=0.120 ms
64 bytes from 192.168.3.1: seq=7 ttl=64 time=0.120 ms
64 bytes from 192.168.3.1: seq=8 ttl=64 time=0.116 ms
64 bytes from 192.168.3.1: seq=9 ttl=64 time=0.121 ms
64 bytes from 192.168.3.1: seq=10 ttl=64 time=0.119 ms
64 bytes from 192.168.3.1: seq=11 ttl=64 time=0.121 ms
64 bytes from 192.168.3.1: seq=12 ttl=64 time=0.120 ms
64 bytes from 192.168.3.1: seq=13 ttl=64 time=0.121 ms
64 bytes from 192.168.3.1: seq=14 ttl=64 time=0.119 ms
64 bytes from 192.168.3.1: seq=15 ttl=64 time=0.121 ms
64 bytes from 192.168.3.1: seq=16 ttl=64 time=0.118 ms
64 bytes from 192.168.3.1: seq=17 ttl=64 time=0.121 ms
64 bytes from 192.168.3.1: seq=18 ttl=64 time=0.118 ms
64 bytes from 192.168.3.1: seq=19 ttl=64 time=0.121 ms
64 bytes from 192.168.3.1: seq=20 ttl=64 time=0.121 ms
64 bytes from 192.168.3.1: seq=21 ttl=64 time=0.121 ms
64 bytes from 192.168.3.1: seq=22 ttl=64 time=0.123 ms
64 bytes from 192.168.3.1: seq=23 ttl=64 time=0.123 ms
64 bytes from 192.168.3.1: seq=24 ttl=64 time=0.121 ms
64 bytes from 192.168.3.1: seq=25 ttl=64 time=0.120
Gdatasheet 2009-01-03
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 Gnusaka 的回复:]
我已经弄好了,你可以看看这个,丢包就是用他的总线配置语句解决的
http://blog.chinaunix.net/u1/34474/showart_400516.html
不过还有一点毛病就是ping停不了,我想应该不是ash的不能接收控制台中断的问题,再查查看
[/Quote]


谢谢您,我的问题也解决了,

Tacs4 11
Tcos4 11
Tacc14 111
Tcoh4 11
Tcah4 11
Tacp6 11
PMCnorm 00

//111111111111100 = 0x7FFC

#define BANKCON4 (0x48000014)
void * bankcon4;
bankcon4=ioremap(BANKCON4,4);
writel(0x7FFC,bankcon4);

就加了这几行代码后 成功解决了,真的很感谢你

在困难的时候能有人指点一个,那种感觉真是好吖,这个问题我都想要放弃了.唉

希望你能加我QQ(已经发到 聊天记录)
noenoughmemory 2009-01-03
  • 打赏
  • 举报
回复
up
Gdatasheet 2009-01-03
  • 打赏
  • 举报
回复
你的解决了、?

是BWSCON寄存器的设置问题吗?

对了,你的ping停不了,应该如你所猜。

我先试试,希望你早那个问题早点解决~

Gnusaka 2008-12-31
  • 打赏
  • 举报
回复
我已经弄好了,你可以看看这个,丢包就是用他的总线配置语句解决的
http://blog.chinaunix.net/u1/34474/showart_400516.html
不过还有一点毛病就是ping停不了,我想应该不是ash的不能接收控制台中断的问题,再查查看
Gnusaka 2008-12-31
  • 打赏
  • 举报
回复
晕了
和你一样的问题
[root@Mini2440 /root]# ping 192.168.255.254
PING 192.168.255.254 (192.168.255.254): 56 data bytes
64 bytes from 192.168.255.254: seq=0 ttl=64 time=2.221 ms
64 bytes from 192.168.255.254: seq=2 ttl=64 time=0.501 ms
64 bytes from 192.168.255.254: seq=4 ttl=64 time=0.518 ms
64 bytes from 192.168.255.254: seq=12 ttl=64 time=0.511 ms
64 bytes from 192.168.255.254: seq=17 ttl=64 time=0.503 ms
64 bytes from 192.168.255.254: seq=38 ttl=64 time=0.509 ms
64 bytes from 192.168.255.254: seq=40 ttl=64 time=0.523 ms
64 bytes from 192.168.255.254: seq=41 ttl=64 time=0.538 ms
64 bytes from 192.168.255.254: seq=50 ttl=64 time=0.472 ms
64 bytes from 192.168.255.254: seq=52 ttl=64 time=0.500 ms
64 bytes from 192.168.255.254: seq=53 ttl=64 time=0.512 ms
64 bytes from 192.168.255.254: seq=55 ttl=64 time=0.522 ms
64 bytes from 192.168.255.254: seq=56 ttl=64 time=0.514 ms
64 bytes from 192.168.255.254: seq=62 ttl=64 time=0.509 ms
我的内核是2.6.26,驱动是自带1.30的,还有无法中断ping命令
Gnusaka 2008-12-31
  • 打赏
  • 举报
回复
我的的板子和你一样,现在也正在解决网卡问题
Gdatasheet 2008-12-26
  • 打赏
  • 举报
回复
晕,刚发现新问题。。掉包率很高 ,这么高的掉包率,怎么用啊?

[root@(none) /proc]# ping 192.168.20.1
PING 192.168.20.1 (192.168.20.1): 56 data bytes
64 bytes from 192.168.20.1: seq=4 ttl=255 time=0.126 ms
64 bytes from 192.168.20.1: seq=14 ttl=255 time=0.102 ms
64 bytes from 192.168.20.1: seq=16 ttl=255 time=0.106 ms
64 bytes from 192.168.20.1: seq=23 ttl=255 time=0.102 ms
64 bytes from 192.168.20.1: seq=25 ttl=255 time=0.103 ms
64 bytes from 192.168.20.1: seq=43 ttl=255 time=0.103 ms
^C
--- 192.168.20.1 ping statistics ---
46 packets transmitted, 6 packets received, 86% packet loss
round-trip min/avg/max = 0.102/0.107/0.126 ms
[root@(none) /proc]#
Gdatasheet 2008-12-26
  • 打赏
  • 举报
回复
通读那两份驱动代码后
问题成功解决,可以ping 通了

方法今晚写到我blog上去

谢谢大家的关心与支持
Gdatasheet 2008-12-26
  • 打赏
  • 举报
回复
我突然发现 一个新的怪现像。。

[root@(none) /proc]# ifconfig eth0 up
In dm9000_open() bwscon:221d1110
In dm9000_open() gpfcon:95aa
In dm9000_open() extint0:42222222
In dm9000_open() intmsk:617e3d0f
In dm9000_open() eintmask:ffff70
request device irq 51 success
ifconfig: SIOCSIFFLAGS: Resource temporarily unavailable
[root@(none) /proc]# cat interrupts
CPU0
30: 179972 s3c S3C2410 Timer Tick
32: 0 s3c s3c2410-lcd
42: 0 s3c ohci_hcd:usb1
43: 0 s3c s3c2440-i2c
51: 0 s3c-ext eth0, eth0, eth0
70: 113 s3c-uart0 s3c2440-uart
71: 163 s3c-uart0 s3c2440-uart
83: 0 - s3c2410-wdt
Err: 0
[root@(none) /proc]#
当我执行三次ifconfig eth0 up后,再cat interrupts
结果
如红色部分所示,51号中断有三个。。。。

执行4次ifconfig eth0 up
他就变成四个eth0,但网卡还是没起来(执行ifconfig 没有输出活动的网卡)
真是奇怪了。
Gdatasheet 2008-12-25
  • 打赏
  • 举报
回复
现在
bwscon:221d1110
gpfcon:95aa
extint0:42222222
intmsk:617e3d0f
eintmask:ffff70

输出的数据表明,我应该设好了

但eth0还是起不来。。。

Gdatasheet 2008-12-25
  • 打赏
  • 举报
回复
经过修改之后 cat interrupts的结果

[root@(none) /proc]# cat interrupts
CPU0
30: 2076 s3c S3C2410 Timer Tick
32: 0 s3c s3c2410-lcd
42: 0 s3c ohci_hcd:usb1
43: 0 s3c s3c2440-i2c
51: 0 s3c-ext eth0
70: 78 s3c-uart0 s3c2440-uart
71: 189 s3c-uart0 s3c2440-uart
83: 0 - s3c2410-wdt
Err: 0
[root@(none) /proc]#

但是问题还是没有解决,如下

[root@(none) /proc]# ifconfig eth0 up
bwscon:221d1110
gpfcon:95aa
extint0:42222222
intmsk:617e3d0f
eintmask:ffff70dm9000 dm9000: WARNING: no IRQ resource flags set.
request device irq 51 success
ifconfig: SIOCSIFFLAGS: Resource temporarily unavailable

[root@(none) /proc]#


参考了他原来的代码,虽然eth0没能up 起来,但如红色部分所示,第七位已经成功置0了

那位 老师能帮我解答
WARNING: no IRQ resource flags set
Resource temporarily unavailable
在这里的原因?
Gdatasheet 2008-12-25
  • 打赏
  • 举报
回复
http://blog.chinaunix.net/u2/84348/showart_1387402.html
http://blog.mcuol.com/User/lvembededsys/Article/6856_1.htm
我就是按这两篇文章来移植的。。(他们的都有点问题(那是细节问题,不要照搬就行了))

还有,他们给的头文件也因为版的问题不能用(后来我就没用那些头文件,编译也通过了)

现在我在看 光盘里的那个源码(它那个在2.6.13内核上可以用),希望能把2.6.27内核(自带)的那个整合成 符合我要求的


这只是个实验板,在硬件没出问题的时候还是不要飞线.以后还要做别的实验。问题出在软件,不想就这么放弃了。
对了,在linuxsir上面我看到也有一个人碰到这问题,有很久了,他应该也没搞定,没下文了。

碰到这问题的人 应该不多,就拿来研究下吧

呵呵。
pottichu 2008-12-24
  • 打赏
  • 举报
回复
http://blog.chinaunix.net/u2/84348/showart_1387402.html

移植dm9000驱动 要改的地方也就那么几处,实在不行,飞条线应该也没关系吧。
Gdatasheet 2008-12-24
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 pottichu 的回复:]
GPF7 已经设置成了外设模式呀。
writel(((readl(gpfcon)&0x3fff)|0x8000),gpfcon);

那你启动以后看一下
cat /pro/interrupt
会不会是有其他设备已经占用了 EINT7 ?
[/Quote]

cat interrupts回显结果,应该中断没有被别的程序占用
[root@(none) /proc]# cat interrupts
CPU0
30: 34194 s3c S3C2410 Timer Tick
32: 0 s3c s3c2410-lcd
42: 25562 s3c ohci_hcd:usb1
43: 0 s3c s3c2440-i2c
70: 193 s3c-uart0 s3c2440-uart
71: 771 s3c-uart0 s3c2440-uart
83: 0 - s3c2410-wdt
Err: 0
[root@(none) /proc]#
个人觉得就是那一位没enable起来,所以后面一连带的问题都出来了。

就是不想动硬件,我才跑到这里来请教的,因为用友善之臂提供的 内核+rootfs是可以正常上网的,说明硬件不会有问题
正因为如此,所以我没先 飞线---我怕,飞了线之后,那一位又起不来就!@$##$%^。
如果不是硬件问题,飞线也没办法啊。
Gdatasheet 2008-12-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 Behard 的回复:]
我看你的代码跟我的相差很远,我没有硬件,是 uClinux V2.6.26-rc6 的代码

C/C++ code
/*
* dm9000 Ethernet
*/

#ifndef _DM9000X_H_
#define _DM9000X_H_

#define DM9000_ID 0x90000A46

/* although the registers are 16 bit, they are 32-bit aligned.
*/

#define DM9000_NCR 0x00
#define DM9000_NSR 0x01
#define DM9000_TCR 0x02
#define DM9000_T…
[/Quote]
我的是linux2.6.27自带的驱动,版本如下,应该是最新的了
DM9000 Ethernet Driver, V1.31
你那个版本的,我试过,要改动的实在在多了,所以没选那个

加载更多回复(9)

4,438

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧