About PCI interruption
PCI有8个中断,分别map到传统中断的10 ,11。当一个pci设备发生中断后,cpu接收到这个中断后要怎么知道这个中断是此设备发生的呢!
还有就pci的8个中断是怎么map到传统中断上的!主要是我们要怎么知道是哪一个pci设备发生了中断。。!
thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
没太明白,PCI有8个中断?你是不是指一个设备上最多有8个Function,每一个都有中断的话最多8个?这个CPU本身是无法区分的吧,一般要驱动去实现,通常是在设备的Function中设置一个可以视别此设备是否发生了中断的“寄存器”,中断来了之后在其Handler中读这个寄存器来判断是否发生了中断,并且这个寄存器一般好像是设计为“读-清”或“读-减”。
一个pci device最多有8个functions, 但是最多有4个interrupts。
传统pci中断是硬连线的,最多有abcd这4条线,不可能达到8。
是的,不过不同的Function可以共用一个INTx#的:
multi-function device, all functions may use the same INTx# line or each may have its own
(up to a maximum of four functions) or any combination thereof. A single function can
never generate an interrupt request on more than one INTx# line.
呵呵
首先哈,先谢谢大家的讨论.虽然没完全回答我的问题,但是至少我知道了当发生中断时要向每一个pci设备查,是不是它发生了中断。
但是
1:对于pci设备有4条中断引脚,也就是上面大家说到的,当然,这个也只有bios或者硬件设计者才知道了,我们编程是不需要了解
2:对于pci总线,有8条中断线。这8条中断线就map到传统的int 9-11。
我只是想知道关于这8条map到传统的int9-11中间到底是咋回事,是怎么map到int9-11的。
note:上面说的只是在没启用acpi的时候。在启用acpi 的时候暂时不说。我也不清楚!
这个,呵呵,可能我们两个人一开始都会错意了。不过你说的PCI总线8条中断线好像不是规范里的吧?规范好像只定义了Device的4个PIN,和系统如何连接给了一些说明,但之前已经说过是System specific。
所有的pci设备最多支持4个中断输出:INT A#, INT B#, INT C#, INT D#,最多占用系统4个中断源,这是pci设备规范里面讲的东西,都是标准化的东西。。。