阅读:2181回复:4
有关PCI中断的处理
各位大侠:
小弟最近开发一块PCI板,需要用到中断,中断IRQ5,对应中断号为0x0d,当我在中断处理程序的最后不加outp(0x20,0x20)来清8259a中的中断位时,中断只会产生一次,而当我加上outp(x020,0x20)时,计算机就会象相应不过来一样没有反应,而我在中断服务程序中只有一句简单的加法。请问各位对于PCI设备的中断的处理,是否要象对ISA的中断一样最后要清中断位,对于PCI设备的中断究竟应该如何处理,请哪位大侠为我详细讲讲,最好有例子代码。哦,对了,我用的是DOS操作系统。 先多谢了! |
|
|
沙发#
发布于:2005-02-18 10:35
当用主片中IRQ0-IRQ7时,只须在中断屏蔽寄存器中打开相应中断,在中断服务程序中,中断结束后,发一次中断结束命令EOI;而涉及从片中IRQ8-IRQ15高号中断时,除在从片中的中断屏蔽寄存器中打开相对应的中断,还须打开主片中的IRQ2,且在中断服务程序中中断结束时,要发两次EOI命令,分别使主片和从片执行中断结束命令。
if (IrqNo >= 8) { outp(0xA0,0x20); // 向从片ICR送EOI命令 } outp(0x20,0x20); // 向主片ICR送EOI命令 |
|
|
板凳#
发布于:2005-02-19 08:38
学习了
|
|
地板#
发布于:2005-02-21 16:58
多谢seaquester 的回答,我再试试
|
|
|
地下室#
发布于:2009-11-05 15:40
|
|
|