MSI中断简介
MSI(message signal interrupt)中断,系统启动时会事先分配一个特定的地址,PCI设备向这个特定的地址写特定的消息以触发一个CPU中断。最大支持32个中断且中断号必连续(最新的MSI-x中断可支持2048个中断,且中断号不必连续)。
这个特定的地址与消息都已由系统自动分配好并存储在PCI设备的配置空间中,一般情况下电脑端软件开发只需直接使用配置空间里的参数,不必去手动修改。
MSI中断开启
第一步 inf文件
[mydevice.HW]
AddReg = mydevice_addreg
[mydevice_addreg]
HKR,Interrupt Management,,0x00000010
HKR,Interrupt Management\MessageSignaledInterruptProperties,,0x00000010
HKR,Interrupt Management\MessageSignaledInterruptProperties,MSISupported,0x00010001,1
在驱动inf文件中,通过修改注册表将PCI设备的MSI中断使能。
https://docs.microsoft.com/zh-cn/windows-hardware/drivers/kernel/enabling-message-signaled-interrupts-in-the-registry?redirectedfrom=MSDN
第二步 驱动程序中注册MSI中断
在windriver驱动中注册MSI中断,只能用函数IoConnectInterruptEx。