阅读:9524回复:5
请教:PCIE Chaining DMA(链式DMA) 与 MSI 中断(消息信号中断)
PCIE 消息信号中断(MSI)在Windows XP及以前版本系统,根据MSDN上描述好像不支持,只有Vista及以后版本才支持
那么现在很多PCIE设备是如何在XP系统下工作的?是默认采用中断线方式吗?还是需要手动如何设置? 看资料显示,PCIE 链式DMA采用中断描述符表形式,若中断方式使用中断线方式的话,那么如何控制中断描述表呢? 向大家请教了!谢谢! |
|
沙发#
发布于:2010-12-03 15:54
MSI Message Singal Interrupt的中断不是靠中断管脚上的中断,而是靠消息的传递。就是内存中有个地址,只要往这个地址写数据,就会产生中断。
不过对于驱动程序员来说,你不用关系太底层,微软的ACPI驱动会帮你解析好这些。 ------------------------------------------------------------------ 张帆的驱动开发论坛 http://bbs.kerneldev.com/ 张帆的驱动开发QQ群1# 49944346(满) 张帆的驱动开发QQ群2# 64778681(目前开放中...) |
|
|
地板#
发布于:2010-12-03 18:59
链接终于打开了哈,呵呵
|
|
地下室#
发布于:2011-03-02 08:53
对 PCIe 的 MSI/MSI-X 的使用是需要你手动设置 MSI/MSI-X 的 Message Control、
Message Address、Message Data 等字段的。一般 OS 都会对以上一系列动作提供 相关的 Kernel API,也就是说,所谓支持 MSI/MSI-X 中断的 OS 也一样还是需要 你显示的调用相关 Kernel API 的。在默认情况下 PCIe 为向前兼容使用 Assert_INTx 消息报文,即“虚拟中断线”的方式通过 APIC 方式进行中断分派和提交,既然 是虚拟也就是说没有物理上的中断线和 INTx 信号。这种设计主要考虑的一点是在 PCIe Bridge 下挂接的那些 Legacy PCI 设备,他们只支持 INTx 信号方式提交中断, 这就需要 PCIe 将这些 INTx 转换成 Assert INTx 的消息报文进行提交。 |
|
5楼#
发布于:2011-03-26 17:14
我在WIN7上做了msi中断和DPC处理,效果不错,特别是MIS-X支持多个MessageID,赫赫
microsoft从vista开始可以用IoConnectInterruptEx来适应多种不同需求,从传统的INTx 方式的中断到MSI,MSI-X 都行 |
|