Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3569410
  • 博文数量: 205
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 7385
  • 用 户 组: 普通用户
  • 注册时间: 2013-01-23 18:56
个人简介

将晦涩难懂的技术讲的通俗易懂

文章分类

全部博文(205)

文章存档

2024年(8)

2023年(9)

2022年(4)

2021年(12)

2020年(8)

2019年(18)

2018年(19)

2017年(9)

2016年(26)

2015年(18)

2014年(54)

2013年(20)

分类: LINUX

2021-01-02 15:59:47

PCI中断路由机制

     PCI中断是可选的,中断是电平触发,低电平有效,集电极开路驱动。中断信号与PCI CLK异步,设备一旦断言为低,则要维持低电平状态,直到驱动程序清除这个中断请求。PCI中断可以为通过链的方式来共享。下文会仔细分析。

PCI 中断的硬件组成

      如图1所示:在PCI 总线上中断请求信号引出脚有INTA# - INTD# 4个,单功能设备只能使用INTA#,而对于多功能设备,各功能设备可任意接至PCI 总线的四条中断申请线INTA# - INTD# 。与中断密切相关的PCI配置寄存器是中断引脚寄存器(Interrupt Pin:0x3C) 和中断线寄存器(Interrupt Line:0x3B)。

图1中断的硬件结构

中断引脚寄存器(Interrupt Pin:0x3C)

       它是一个8 位的寄存器,由接口设计者根据PCI设备使用的PCI 总线中断引脚(INTA# - INTD#)来设置:如果设备使用INTA#脚来申请中断,该寄存器应写入1;如果设备使用INTB#脚来申请中断,该寄存器应写入2;如果设备使用INTC#脚来申请中断,该寄存器应写入3 ;如果设备使用INTD#脚来申请中断,该寄存器应写入4;如果设备不使用中断,该寄存器应写入0,0x05 到0xFF为保留值。

中断线寄存器(Interrupt Line:0x3B):

        对于X86 系列的PC 机,各个插槽的INTA# - INTD#引脚由主板设计者通过可编程路由器接到由主从两个8259A 组成的系统中断控制器的IRQ0 - IRQ15 引脚共计16个引脚中的未使用引脚上。中断线寄存器(Interrupt Line)用于保存中断路由信息的寄存器,在初始化和配置系统时,HOST把路由信息写入到该寄存器。在PCI 接口卡配置空间中,该寄存器的值表明设备的中断引脚( INTA# - INTD#)被连接到系统中断控制器的哪一个引脚(1RQO - IRQ15中的哪一个)上了。设备本身不使用这个值,设备驱动和操作系统使用该值来决定中断的优先权和中断矢量信息, 义,值0 —15 对应16个IRQ 引脚号,值255 用于表示“未知”或“没有连接到中断控制器”,值16 到254 保留。例如:某设备的INTA#被路由至IRQ3 脚,其中断线寄存器的值会设置为3。

可编程中断控制器(PIC:Programmable interrupt controller) 是用来检测中断申请。如图1所示。可编程中断路由器集成在PCI/ ISA 桥芯片(南桥)中,并且提供了四个中断输入端INTA#、INTB#、INTC#、INTD#;通过路由器编程可以使其与系统中断控制器的输入端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) MOD 4


在母板上的设备号

在PCI设备上的中断脚

在母板上的中断脚

0,4,8,12,

16,20,24,28

INTA#

IRQW

INTB#

IRQX

INTC#

IRQY

INTD#

IRQZ

1,5,9,13

17,21,25,29

INTA#

IRQX

INTB#

IRQY

INTC#

IRQZ

INTD#

IRQW

2,6,10,14

18,22,26,30

INTA#

IRQY

INTB#

IRQZ

INTC#

IRQW

INTD#

IRQX

3,7,11,15

19,23,27,31

INTA#

IRQZ

INTB#

IRQW

INTC#

IRQX

INTD#

IRQY


如下图2以COM Express的PCI中断路由为例:

图2 COM Express的中断路由

按照上面的中断路由表,图1 设计中四个设备的七个中断的路由情况为:

     设备0 的INTA#, 设备2 的INTC#   连接IRQW

设备1 的INTA#                连接IRQX

设备2 的INTA#,  设备1 的INTB#   连接IRQY

设备3 的INTA#,  设备2 的INTB#   连接IRQZ

如此,通过中断脚和中断线配置寄存器实现了中断的路由和自动配置

阅读(2416) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~