揭开硬件中断请求IRQ所有秘密

Kiver 发布于2004-7-29 21:58 979 次浏览 0 位用户参与讨论   [复制分享主题]
    实用:揭开硬件中断请求IRQ所有秘密(图解)
% m2 D  F3 ~# y
+ V  h$ H1 H: T) f9 |+ d6 [    IRQ(Interrupt Request)的作用就是在我们所用的电脑中,执行硬件中断请求的动作,用来停止其相关硬件的工作状态。比如我们要打印一份文件,在打印结束时就需要由系统对打印机提出相应的中断请求,来以此结束这个打印的操作。
. h/ C! X2 T. M' K' d" m7 L/ F1 v' Y8 W4 Q9 i. i
  产生中断请求的设备或者事件被称为中断源,中断源可分为两类:一类是CPU内部中断,即执行软件中断指令INT或遇到软件陷阱而产生的中断,它们的中断类型号已由CPU规定好;另一类中断是由CPU以外的I/O设备产生的中断,又称硬件中断,硬件中断可分为不可屏蔽中断NMI和可屏蔽中断INTR,NMI用于紧急情况的故障处理,如RAM奇偶校验错等,INTR则用于外部依靠中断来工作的硬件设备。网卡使用的就是INTR,下面我们对IRQ进行更深入的了解。
0 w1 s3 u2 I' C8 a9 D6 z) C( E4 ], p
& a  p0 V/ F8 Z5 ?0 c  一、中断类型号和IRQ ' D9 v7 z$ {1 d% @' B" G; l

; P8 o  E, p8 N) _2 W% F  外部设备的中断请求是通过中断控制器8259A的INT引脚输入到CPU的INTR引脚向CPU提出中断申请的,并送去一个中断类型号,这是一个8位的二进制数。 * ^/ x. K* X* q- W1 J7 w$ ]

  v5 p, m& j# t' Y/ Z  一片8259A能负责整个外部设备的中断请求(1RQ0-IRQ7),每个外设对应一个中断请求号。 6 w$ S; Z3 n1 u
<a href="http://img.pconline.com.cn/images/upload/bbs/5/108/29/jul/254/9/76/85/28.jpg" target="_blank" ><IMG src="http://img.pconline.com.cn/images/upload/bbs/5/108/29/jul/254/9/76/85/28.jpg" border=0></A>
2 g: [) H1 c$ K( U/ A( }
- k8 ]+ f+ R% v3 o8 ]图为:中断类型号与中断请求号 6 G1 O5 ~/ p/ y4 Z7 m# D

9 g% {( d9 l8 o8 p% n$ g% b  二、IRQ的优先级和默认配置 8 o; \6 H2 F/ g

0 {/ s  z( F1 W% @4 b6 a; i  l" l  一般计算机只能支持16个IRQ,也就是提供16个硬件设备的中断请求,16个IRQ是用两个8259A通过级联来实现的。
* \) v( ^0 X2 p/ U6 f/ V: K
' K# i8 ~+ M+ Q5 M$ o& ]<a href="http://img.pconline.com.cn/images/upload/bbs/5/108/29/jul/254/9/77/72/236.jpg" target="_blank" ><IMG src="http://img.pconline.com.cn/images/upload/bbs/5/108/29/jul/254/9/77/72/236.jpg" border=0></A> * L2 I$ H& y' s1 k# r9 @

2 |$ f" m. o: P' T图为:主从8259A连接图
' D' i4 n! |" j; Q! `9 Z; @! r6 x5 M% `. y. L8 z0 ^% F% K5 B6 y
  主中断控制器8259A的IRQ2与从中断控制器8259A的INT引脚相连,因此从8259A上的中断请求优先级(Priority)享受主8259AIRQ2上的优先分级。所谓优先级是指当有多个中断源提出中断请求时,CPU先为优先权高的中断请求服务。再为优先权低的中断服务。主8259A中IRQ0~IRQ7中的IRQ0优先权最高,IRQ7最低;从8259A中以IRQ8最高,IRQl5最低。 5 r7 _2 ]1 V# {3 `1 j( J- u
2 {# C* q* a2 @* E) ]4 |5 C
  由于两个8259A的连接关系,从8259A的IRQ8~IRQ15的优先权低于主8259A的IRQ0~IRQl,而高于主8259A的IRQ3~IRQ7。 % p+ |) \7 z7 s* n, c
<a href="http://img.pconline.com.cn/images/upload/bbs/5/108/29/jul/254/9/77/207/13.jpg" target="_blank" ><IMG src="http://img.pconline.com.cn/images/upload/bbs/5/108/29/jul/254/9/77/207/13.jpg" border=0></A>
; d+ r/ _  P8 K) {2 s6 o" ~3 k& o) _; O6 t8 D
图为:中断优先级顺序
7 @$ _9 h# G3 R6 J
+ Y! o2 [& C! k* g0 K! c  计算机中有些IRQ有默认的配置,这些默认的配置都是些常用设备,一般的默认配置。
4 ~; o$ p3 n/ G6 F: {; D0 H0 q$ p7 K' W* J. U3 P2 x
<a href="http://img.pconline.com.cn/images/upload/bbs/5/108/29/jul/254/9/84/168/240.jpg" target="_blank" ><IMG src="http://img.pconline.com.cn/images/upload/bbs/5/108/29/jul/254/9/84/168/240.jpg" border=0></A>   _" V! \( {& I, d% s$ z
7 }7 Q* z  G: I0 E& L" H0 V
图为:1RQ的默认配置使用情况
& l. ^- d" R; L) n4 e2 |: B) O. F  x! G+ o
  现在的Windows操作系统已经运用PNP技术,这种“即插即用”的功能可以将中断进行自动分配,大大简化了用户的操作。不过这种PNP技术也有它的弱点,那就是如果不能认出要安装的新设备,那么自动分配中断时就会产生冲突。我们日常所用的硬件对于IRQ的设置也不尽相同,所以在安装新硬件的时候,系统往往并不能自动检测正确的IRQ来分配给所有调用的硬件,这就会造成此硬件设备或是原来的旧硬件出现不能正常工作的现象。现在新的硬件产品层出不穷,各种产品又相互兼容,功能类似,这就导致了操作系统常常不能正确检测出新设备,中断冲突也就不可避免了。其实这是因为系统自动将该硬件的IRQ分配给了其他与此IRQ相同的硬件上,从而发生冲突使硬件不能正常工作。一般如果遇到这种情况,只要将新旧两个硬件的IRQ配置手动调开就可以解决了。手动配置IRQ时,最好检查有无保留中断(IRQ),不要让其他设备使用该中断号,以免引起新的中断冲突,造成系统死机。另外从表2还可以看出,COM1端口设置为IRQ4,而COM2端口设置为IRQ3,即COM2比COMl中断优先权高,所以为保持通信的传输质量通常将COM2端口接调制解调器,而把COM1留给鼠标使用。利用相同的原理,合理分配各硬件设备的中断号,将使你的系统性能佳。 ! L) |6 w- P2 I6 U* I; y: E+ E& c
您需要登录后才可以回帖 登录 | 註冊

本版积分规则

快速
回复
返回
列表
返回
顶部