我是靠谱客的博主 机灵便当,最近开发中收集的这篇文章主要介绍如何解决IRQ冲突,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

  轻松分配板卡资源
  中断是计算机处理特殊问题的一个过程,当计算机执行程序的过程中出现某个特殊情况时,会暂时中止现行程序,转去执行这一事件的程序,处理完毕之后再回到原来程序的中断点继续执行的整个过程叫做中断。

  什么是IRQ

 
  那么,什么是IRQ(中断请求)呢?中断请求是由某个设备发出并同时请求CPU产生中断的一个请求响应信号。通常情况下,计算机是根据中断请求的优先级来决定究竟应当首先响应哪一个设备的中断请求的(中断请求IRQ0~1RQ15中,IRQ0的优先级别最高,IRQ15最低)。原则上,计算机中每个设备自身只有惟一的一个中断请求通道,即IRQ值(又叫IRQ号)。当两个硬件设备同时使用同一个中断通道(IRQ值)时,就会发生IRQ冲突,因为这个时候处理器已经无法准确判断收到的中断请求究竟来自于哪个设备了。
  IRQ的分配与冲突产生的原因
表1 各irq在bios中所对应的硬件设备
irq编号
设备名称
用途

irq0
time
电脑系统计时器

irq1
keyboard
键盘

irq2
redirect irq9
与irq9相接,mpu-401 mdi使用该irq

irq3
com2
串口设备

irq4
com1
串口设备

irq5
lpt2
建议声卡使用该irq

irq6
fdd
软驱传输控制用

irq7
lpt1
打印机传输控制用

irq8
cmos alert
即时时钟

irq9
redirect irq2
与irq2相接;可设定给其他硬件使用

irq10
reversed
建议网卡使用该irq

irq11
reversed
与irq10相同,都是保留给pci硬件使用,建议分配给显卡

irq12
ps/2mouse
接ps/2鼠标,若无,也可设定给其他硬件使用

irq13
fpu
协处理器用,例如fpu(浮点运算器)

irq14
primary ide
主硬盘传输控制器(1号)

irq15
secondary ide
从硬盘传输控制器(2号)

  在我们使用的计算机中,大都是由一个中断控制器8259来控制系统中每个硬件的IRQ值。目前共有16组IRQ,去掉其中用来做“桥接”的一组IRQ,实际上只有15组IRQ可供硬件使用。这15组IRQ,在基本输入输出系统(BIOS)中通常都有自己所对应的硬件设备(见表1 )。而我们日常所用的操作系统,对于IRQ的分配也不尽相同,所以在安装新硬件的时候,系统往往并不能自动给设备分配正确的IRQ值,这样,难免就会造成此硬件设备或是原来的旧硬件出现不能正常工作的现象。其实,这是由于操作系统误将该硬件使用的IRQ又同时分配给了另一个硬件设备所造成的。产生IRQ冲突后,冲突硬件便不能正常工作。一般来说,遇到这种情况,只要将产生冲突的两个硬件的IRQ值以手动方式调开或在BIOS中进行相应的调整,就可以解决问题。

  如何解决IRQ冲突

  1、硬件“挪移”法:此方法主要用来解决中断冲突造成的死机和较难排除的IRQ冲突。即在主板BIOS默认的IRQ资源分配下,通过调整板卡(声卡、Modem、网卡、电视卡、显卡等)于插槽的安装位置来避开IRQ冲突。采取这种方法时,需要用户掌握主板BIOS默认状态下的IRQ资源分配情况,然后在此基础上调整板卡的位置,从而避开IRQ冲突。 //本文来自靠谱客www.uoften.com转载请注明

表2 某主板bios默认状态下的irq资源分配表件设备
插槽
int a
int b
int c
int d

pci插槽1
共享

pci插槽2

pci插槽3

共享

pci插槽4

共享

pci插槽5

共享

pci插槽6

共享

agp插槽
共享

主板声卡

共享

usb控制器

共享

  下面我们举例来说明,表2为某主板BIOS默认状态下的IRQ资源分配情况,可以看到该主板在BIOS默认的情况下,PCI-1与AGP共用一个中断请求(通常是IRQ11),PCI-3、PCI-5、板载声卡共用一个中断资源,PCI-4、PCI-6及USB控制器共用一个中断资源。了解了上述IRQ分配情况,那么在安装板卡的时候,我们就可以以表3的方式来进行板卡的安装,以避开IRQ冲突。

表3 建议采用的安装方式
配件
安装位置
默认的irq自动配置

agp显卡
agp插槽
与pci 插槽 1共享irq

pci显卡
pci 插槽1
与agp插槽共享irq

电视卡
pci 插槽2
独立使用irq(不共享irq)

声卡
pci 插槽 3或插槽 5
与主板上的ac97声卡共享irq

网卡、内置modem
pci 插槽 4或插槽 6
与主板上的usb控制器共享irq

  这样分配的理由是:很少有人会同时使用AGP显卡与PCI显卡,因此与之对应的中断资源(IRQ11)就处于独享状态。分配PCI-2插槽给电视卡,这是由于PCI-2本身就独享一个中断资源。而使用单独的声卡时,由于我们从主板上屏蔽了板载声卡,因此无论声卡插在PCI-3或PCI-5上,均不会与其他硬件发生中断冲突。同样,网卡、内置Modem皆可按此方法进行安装。
  2、主板BIOS、操作系统的“软配置”法:对于不太严重的中断冲突(不死机),我们可以通过手动调整BIOS和操作系统中的IRQ值来避开IRQ冲突。下面以笔者的升技BH6主板为例来说明:
  1)进入操作系统,依次打开“控制面板→设备管理器→属性”,查看各硬件的IRQ的分配情况。当硬件产生IRQ冲突和驱动程序安装错误时,通常以“!”号或“?”来标识。
  2)以Windows Me为例,依次选择“开始→程序→附件→系统工具→系统信息→硬件资源→IRQ”,从信息栏中,我们可以非常直观的了解IRQ资源的分配情况。
  3)从图1中笔者发现IRQ3(COM2)处于闲置状态(在IRQ资源紧张之时,可以在BIOS中屏蔽COM2以节约出一个IRQ),声卡与显示卡共用IRQ11,从而导致声卡与显示卡IRQ冲突,本来应该分配给声卡使用的IRQ5却分配给电视卡(Bt848 Video Capture Device)。下面,笔者将通过调整BIOS中的“PNP/PCI Configuration”设置项,重新分配IRQ资源,以避开IRQ冲突。

  图1 IRQ资源的分配情况
  4)重新启动计算机,进入CMOS设置菜单,选择“PNP/PCI Configuration”(如图2),将“PNP OS Installed(即插即用操作系统安装)”定义为“Yes”,将“Resources Controlled By(资源控制)”定义“Auto(自动)”。

  图2 “PNP/PCI Configuration”控制项可以让用户自由分配IRQ资源
  5)将“PIRQ_0 USE IRQ No:”(PCI-1)设定为“Auto”(这个PCI插槽实际上是空着的)。
  6)将“PIRQ_1 USE IRQ No:”(PCI-2)设定为“10”(这个PCI槽由Modem使用着)。
  7)将“PIRQ_2 USE IRQ No:”(PCI-3)设定为“5”(这个PCI槽由PCI声卡使用着)。
  8)将“PIRQ_3 USE IRQ No:”(PCI-4)设定为“3”(这个PCI槽由电视卡使用着)。
  9)保存并退出CMOS设置程序。
  通过对IRQ的调整,笔者将原本十分紧张的IRQ资源节省出了一个IRQ3,并将其重新分配给了电视卡。而原来占用着IRQ5的电视卡又将该IRQ资源还给了声卡。这样,声卡就获得了IRQ5的控制权。之后,电视卡使用IRQ3、声卡使用IRQ5、显示卡使用IRQ11、Modem使用IRQ10(表3)。通过合理的IRQ资源重新分配,各硬件终于可以和平相处了。

最后

以上就是机灵便当为你收集整理的如何解决IRQ冲突的全部内容,希望文章能够帮你解决如何解决IRQ冲突所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(136)

评论列表共有 0 条评论

立即
投稿
返回
顶部