资源描述:
《PCI-中断路由机制.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、PCI中断路由机制PCI中断是可选的,中断是电平触发,低电平有效,集电极开路驱动。中断信号与PCICLK异步,设备一旦断言为低,则要维持低电平状态,直到驱动程序清除这个中断请求。PCI中断可以为通过链的方式来共享。下文会仔细分析。1. PCI中断的硬件组成如图1所示:在PCI总线上中断请求信号引出脚有INTA#-INTD#4个,单功能设备只能使用INTA#,而对于多功能设备,各功能设备可任意接至PCI总线的四条中断申请线INTA#-INTD#。与中断密切相关的PCI配置寄存器是中断引脚寄存器(InterruptPin:0x3C)和
2、中断线寄存器(InterruptLine:0x3B)。图1中断的硬件结构中断引脚寄存器(InterruptPin:0x3C): 它是一个8位的寄存器,由接口设计者根据PCI设备使用的PCI总线中断引脚(INTA#-INTD#)来设置:如果设备使用INTA#脚来申请中断,该寄存器应写入1;如果设备使用INTB#脚来申请中断,该寄存器应写入2;如果设备使用INTC#脚来申请中断,该寄存器应写入3;如果设备使用INTD#脚来申请中断,该寄存器应写入4;如果设备不使用中断,该寄存器应写入0,0x05到0xFF为保留值。中断线寄存器
3、(InterruptLine:0x3B): 对于X86系列的PC机,各个插槽的INTA#-INTD#引脚由主板设计者通过可编程路由器接到由主从两个8259A组成的系统中断控制器的IRQ0-IRQ15引脚共计16个引脚中的未使用引脚上。中断线寄存器(InterruptLine)用于保存中断路由信息的寄存器,在初始化和配置系统时,HOST把路由信息写入到该寄存器。在PCI接口卡配置空间中,该寄存器的值表明设备的中断引脚(INTA#-INTD#)被连接到系统中断控制器的哪一个引脚(1RQO-IRQ15中的哪一个)上了。设备本身
4、不使用这个值,设备驱动和操作系统使用该值来决定中断的优先权和中断矢量信息,义,值0—15对应16个IRQ引脚号,值255用于表示“未知”或“没有连接到中断控制器”,值16到254保留。例如:某设备的INTA#被路由至IRQ3脚,其中断线寄存器的值会设置为3。可编程中断控制器(PIC:Programmableinterruptcontroller)是用来检测中断申请。如图1所示。可编程中断路由器集成在PCI/ISA桥芯片(南桥)中,并且提供了四个中断输入端INTA#、INTB#、INTC#、INTD#;通过路由器编程可以使其与系统中断
5、控制器的输入端IRQi连接。INTX#线怎样路由到IRQi线上,由系统定义。如果系统的中断控制器有四个未使用的中断请求信号脚可供使用,如图1所示的IRQW,IRQX,IRQY,IRQZ,下面给出的路由机制可以将所有设备的中断请求均匀地分配到四条IRQ线上。设:MB=IRQ引脚号(IRQW:0,IRQX:1,IRQY:2,IRQZ:3)D=设备号I=INTX#线号(INTA#:0,INTB#:1,INTC#:2,INTD#:3)MB=(D+I)MOD4在母板上的设备号在PCI设备上的中断脚在母板上的中断脚0,4,8,12,16,20,
6、24,28INTA#IRQWINTB#IRQXINTC#IRQYINTD#IRQZ1,5,9,1317,21,25,29INTA#IRQXINTB#IRQYINTC#IRQZINTD#IRQW2,6,10,14INTA#IRQY18,22,26,30INTB#IRQZINTC#IRQWINTD#IRQX3,7,11,1519,23,27,31INTA#IRQZINTB#IRQWINTC#IRQXINTD#IRQY如下图2以COMExpress的PCI中断路由为例:图2COMExpress的中断路由按照上面的中断路由表,图1设计中四个
7、设备的七个中断的路由情况为: 设备0的INTA#,设备2的INTC# 连接IRQW设备1的INTA# 连接IRQX设备2的INTA#, 设备1的INTB# 连接IRQY设备3的INTA#, 设备2的INTB# 连接IRQZ如此,通过中断脚和中断线配置寄存器实现了中断的路由和自动配置。2. PCI中断共享的处理 系统必须为每个中断提供对应的中断服务程序,所有中断服务程序的入口地址即中断向量通常组织在一起形成一个中断入口表,在WINDOWS操作系统中该表称为中断描述符表。由于PCI的
8、中断是可以共享的,如图1所示,按照路由机制,设备0的INTA#和设备2的INTC#共享IRQW线而在中断入口表中,所有由IRQW线送来的中断中只能有一个中断,其服务程序的入口存储在系统中断入口表中。那么其他中断服务程序的入口如何组织呢