- 用户应用首先断言
cfg_interrupt_int
和cfg_interrupt_pending
有效,以断言中断有效。 - 然后,核会断言 cfg_interrupt_sent 有效,以指示已接受中断。如果 PCI 命令寄存器中的中断禁用位设为 0,那么核会发送断言中断有效报文 (
Assert_INTA
)。中断处理完成后,用户应用会发出deasserts cfg_interrupt_int
以将其断言无效。 - 当用户应用发出
deasserts cfg_interrupt_int
以将其断言无效后,核会发出断言中断无效报文 (Deassert_INTA
)。这通过第 2 次断言cfg_interrupt_sent
有效来表示。
cfg_interrupt_int
必须保持断言有效,直至用户应用接收到断言中断有效报文 (Assert_INTA
) 的确认(通过断言 cfg_interrupt_sent
有效来表示),并且中断已由根的中断服务例程 (ISR) 来完成处理/清除为止。断言 cfg_interrupt_int
无效会导致核发出断言中断无效报文 (Deassert_INTA
)。cfg_interrupt_pending
必须随 cfg_interrupt_int
一起保持断言有效,直至中断处理完成为止,否则状态寄存器中的中断状态位将无法正确更新。当首次断言 cfg_interrupt_sent
有效后,cfg_interrupt_pending
可随 cfg_interrupt_int
一起断言无效。当软件/根的 ISR 收到断言中断有效报文后,它会读取此中断状态位以判定针对此功能是否存在中断暂挂。
注释: 对于 PCIE4C 块,在命令寄存器中如果中断禁用位已置位(即,命令寄存器位 10 = 1),那么该核不会阻塞 INTx 中断。用户应用必须监控
cfg_function_status
以检查 INTx 中断处于启用还是禁用状态,仅当在命令寄存器中已启用中断时,cfg_interrupt_int
才能断言有效。图 1. 遗留中断信号