我有点困在编程设备 MSI(消息信号中断),欢迎任何指针... (我的环境是Watcom C + DOS / 32a - dos扩展器,在平模式......)
@ PIC(8259)模式对我来说没问题......
我列出了我的工作,如下所示,也许有人可以帮助澄清这些......谢谢!
(1)多条消息启用= 0(对于单个MSI设置此字段= 0; MMC = 100b)
(2)对于MSI功能中的MSI消息地址寄存器
(3)对于MSI功能中的MSI消息数据寄存器
(4)最后通过设置MSICAP.MC.MSIE = 1启用MSI
当前状态: 我在启用MSIE = 1后发现系统挂起,设备通过MSI生成中断!
注意:在上面的序列中,服务例程未安装,因为我不知道该怎么做...(这就是我的应用挂起的原因吗? )
谢谢!
[20120822已更新] 当将 消息数据 字段中的向量设置为0x20时,应用程序挂起......但如果设置为0x76,我发现应用程序没有挂起然后我可以检查设备是否生成中断和本地APIC接收如下中断消息:
对于PCI设备(AHCI控制器):
对于AHCI HBA注册:
我认为设备成功地将消息发送到请求服务,因为:
此外,我发现LAPIC收到此中断消息,因为:
因此,似乎设备产生中断,本地APIC接收到这个;即便如此,我的服务程序也没有被调用!
答案 0 :(得分:2)
要在DOS模式下实现MSI功能,您可以参考以下序列:
注意:
@参考:
Intel 64 and IA-32 Architectures Software Developer Manuals