kaixin11
驱动牛犊
驱动牛犊
  • 注册日期2002-11-05
  • 最后登录2018-08-12
  • 粉丝0
  • 关注0
  • 积分29分
  • 威望42点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:2118回复:4

有关PCI中断的处理

楼主#
更多 发布于:2005-02-17 10:26
各位大侠:
  小弟最近开发一块PCI板,需要用到中断,中断IRQ5,对应中断号为0x0d,当我在中断处理程序的最后不加outp(0x20,0x20)来清8259a中的中断位时,中断只会产生一次,而当我加上outp(x020,0x20)时,计算机就会象相应不过来一样没有反应,而我在中断服务程序中只有一句简单的加法。请问各位对于PCI设备的中断的处理,是否要象对ISA的中断一样最后要清中断位,对于PCI设备的中断究竟应该如何处理,请哪位大侠为我详细讲讲,最好有例子代码。哦,对了,我用的是DOS操作系统。
  先多谢了!
               
开心
seaquester
驱动大牛
驱动大牛
  • 注册日期2002-05-22
  • 最后登录2016-06-16
  • 粉丝0
  • 关注0
  • 积分500分
  • 威望115点
  • 贡献值0点
  • 好评度107点
  • 原创分0分
  • 专家分52分
沙发#
发布于: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命令
八风舞遥翩,九野弄清音。 鸣高常向月,善舞不迎人。
doglove
驱动牛犊
驱动牛犊
  • 注册日期2005-02-15
  • 最后登录2005-03-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-02-19 08:38
学习了
kaixin11
驱动牛犊
驱动牛犊
  • 注册日期2002-11-05
  • 最后登录2018-08-12
  • 粉丝0
  • 关注0
  • 积分29分
  • 威望42点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2005-02-21 16:58
多谢seaquester 的回答,我再试试
开心
liexinsuo
驱动牛犊
驱动牛犊
  • 注册日期2009-11-03
  • 最后登录2009-11-21
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2009-11-05 15:40
猎心锁
游客

返回顶部