phoenix-linux 发表于 2009-11-09 19:19

帮忙看一个并口驱动中断的实验,谢谢!!!

中断程序怎么也不行,弄了好多天了.那位高手帮忙看看.

程序是把并口的25和10引脚连起来就发生中断……
这个是执行执行测试程序之前的信息(关键部分):
# cat /proc/interrupts

CPU0


0:
282
IO-APIC-edge
timer

1:
7517
IO-APIC-edge
i8042

3:
1
IO-APIC-edge


4:
1
IO-APIC-edge



6:
4
IO-APIC-edge
floppy

8:
1
IO-APIC-edge
rtc0

9:
0
IO-APIC-fasteoi
acpi

12:
2491
IO-APIC-edge
i8042

14:
0
IO-APIC-edge
ata_piix

15:
7798
IO-APIC-edge
ata_piix

17:
16386
IO-APIC-fasteoi
BusLogic BT-958

18:
8703
IO-APIC-fasteoi
eth0

19:
1287
IO-APIC-fasteoi
uhci_hcd:usb1, Ensoniq AudioPCI
NMI:
0
Non-maskable interrupts
LOC:
514919
Local timer interrupts
TRM:
0
Thermal event interrupts
SPU:
0
Spurious interrupts
ERR:
0
MIS:
0
# cat /proc/ioports
0000-001f : dma1
0020-0021 : pic1
0040-0043 : timer0
0050-0053 : timer1
0060-006f : keyboard
0070-0071 : rtc0
0080-008f : dma page reg
00a0-00a1 : pic2
00c0-00df : dma2
00f0-00ff : fpu
0170-0177 : 0000:00:07.1

0170-0177 : ata_piix
01f0-01f7 : 0000:00:07.1

01f0-01f7 : ata_piix
02f8-02ff : serial
0376-0376 : 0000:00:07.1

0376-0376 : ata_piix
03c0-03df : vga+
03f2-03f5 : floppy
03f6-03f6 : 0000:00:07.1

03f6-03f6 : ata_piix
03f7-03f7 : floppy DIR
03f8-03ff : serial
……
把测试程序编为a文件执行:
# ./a
start...
wait... input
执行./a之后的信息:

# cat /proc/interrupts //多了一个中断7

……


7:
0
IO-APIC-edge
intdev

……
# cat /proc/ioports //这个没变
……
0376-0376 : 0000:00:07.1

0376-0376 : ata_piix
03c0-03df : vga+
……


下面两个是驱动和测试程序(以前是自己写的,不行,我以为是我的程序错误,下面是抄的书:俞永昌那本):
驱动:
有字数限制放到附件里了测试程序:
有字数限制放到附件里了

phoenix-linux 发表于 2009-11-09 23:43

不知道怎么给分,我好像有8分,大家给解决一下这个问题,弄出来把8分都给你们!

phoenix-linux 发表于 2009-11-09 23:44

回复 #2 phoenix-linux 的帖子

好像有10分了,都给了!

phoenix-linux 发表于 2009-11-09 23:50

回复 #1 phoenix-linux 的帖子

各位大哥大姐,弄了好几天了,出不来,帮忙解决一下。

dreamice 发表于 2009-11-10 09:16

回复 #4 phoenix-linux 的帖子

首先确认,你在硬件连接上是否对了,如果对了,再确认你注册的中断号是否正确,中断是否发生了?如果发生了,你的中断处理函数应该会被调用,这样的话,你在中断处理函数里面加一些printk信息,应该是可以看到的。

phoenix-linux 发表于 2009-11-10 19:40

回复 #5 dreamice 的帖子

硬件是没有问题的,我不用中断的话,都能测试。printk函数以前也加过,没反应。用那个
cat /proc/interrupts显示7号中断发生过0次,能说明问题不?

另外,我的并口好像和书上说的是反的,一行是1-13,另一行是14-25,而我的是一行13-1,25-14。也就是每一行的顺序是反的。

有一点不明白,难道并口不都是用的7号中断?

dreamice 发表于 2009-11-10 21:13

回复 #6 phoenix-linux 的帖子

0次就说明没有发生中断啊
页: [1]
查看完整版本: 帮忙看一个并口驱动中断的实验,谢谢!!!