接前一篇文章:《PCI Express体系结构导读》随记 —— 第I篇 第2章 PCI总线的桥与配置(13)
2.3.1 PCI桥
在PCI Agent设备的配置空间中包含了许多寄存器,这些寄存器决定了该设备在PCI总线中的使用方法,本节不会全部介绍这些寄存器,因为系统软件只对部分配置寄存器感兴趣。PCI Agent设备使用的配置空间如图2-9所示:
本回继续讲解在PCI Agent设备的配置空间中包含的其余寄存器:
(7)Capabilities Pointer寄存器
在PCI设备中,该寄存器是可选的;但是在PCI-X和PCIe设备中,必须支持这个寄存器。Capabilities Pointer寄存器存放Capabilities寄存器组的基地址,PCI设备使用Capabilities寄存器组存放一些与PCI设备相关的扩展配置信息。
(8)Interrupt Line寄存器
这个寄存器是系统软件对PCI设备进行配置时写入的,该寄存器记录当前PCI设备使用的中断向量号,设备驱动程序可以通过这个寄存器,判断当前PCI设备使用处理器系统中的哪个中断向量号,并将驱动驱动程序的中断服务例程注册到操作系统中。
该寄存器由系统软件初始化,其保存的值与8259A中断控制器相关。该寄存器的值也是由PCI设备与8259A中断控制器的连接关系决定的。如果在一个处理器系统中,没有使用8259A中断控制器管理PCI设备的中断,则该寄存器中的数据并没有意义。
在多数PowerPC处理器系统中,并不使用8259A中断控制器管理PCI设备的中断请求,因此该寄存器没有意义。即使在x86处理器系统中,如果使用了I/O APIC中断控制器(即未使用8259A中断控制器),该寄存器保存的内容仍然无效。目前在绝大多数处理器系统中,并没有使用该寄存器存放PCI设备使用的中断向量号。
(9)Interrupt Pin寄存器
这个寄存器保存PCI使用的中断引脚(Interrupt Line中是中断向量号)。PCI总线提供了4个中断引脚:INTA#、INTB#、INTC#和INTD#。Interrupt Pin寄存器为1时表示使用INTA#引脚向中断控制器提交中断请求,为2时表示使用INTB#,为3时表示使用INTC#,为4时表示使用INTD#。
如果PCI设备只有一个子设备时,该设备只能使用INTA#;如果有多个子设备时,可以使用INTB~D#信号。如果PCI设备不使用这些中断引脚,向处理器提交中断请求时,该寄存器的值必须是0。值得注意的是,虽然在PCIe设备中并不含有INTA~D#信号,但是依然可以使用该寄存器,因为PCIe设备可以使用INTx中断消息模拟PCI设备的INTA~D#信号。
PCI Agent设备配置空间中包含的其余寄存器请看下回。