中断上下文结构 (0x8) 如下所示。
信号 | 位 | 所有者 | 描述 |
---|---|---|---|
rsvd | [255:126] | 驱动 | 保留。初始化为 0 |
func | [125:114] | 驱动 | 功能编号 |
rsvd | [113:83] | 驱动 | 保留。初始化为 0 |
at | [82] | 驱动 | 1'b0:未转换的地址 1'b1:已转换的地址 |
pidx | [81:70] | DMA | 生产者索引,由 DMA IP 更新。 |
page_size | [69:67] | 驱动 |
中断聚合环大小: 0:4 KB 1:8 KB 2:12 KB 3:16 KB 4:20 KB 5:24 KB 6:28 KB 7:32 KB |
baddr_4k | [66:15] | 驱动 | 中断聚合环的基址 – 位 [63:12] |
color | [14] | DMA | 颜色位 |
int_st | [13] | DMA | 中断状态: 0:WAIT_TRIGGER 1:ISR_RUNNING |
Rsvd | [12] | 不适用 |
保留 |
vec | [11:1] | 驱动 | msix 表中的中断矢量索引 |
valid | [0] | 驱动 | 有效 |
软件需要对中断聚合环大小进行相应调整。每个源均可向环发送最多 2 条报文。因此,环的大小需满足以下公式。
条目数量 ≥ 队列数的 3 倍
Interrupt Context(中断上下文)由上下文访问进行编程。QDMA_IND_CTXT_CMD.Qid 包含来自中断源的环索引。MDMA_CTXT_CMD_CLR 操作可清除中断上下文中所有位。MDMA_CTXT_CMD_INV 可清除有效位。
- 通过 QDMA_TRQ_SEL_IND 执行上下文访问:
- QDMA_IND_CTXT_CMD.Qid = 环索引
- QDMA_IND_CTXT_CMD.Sel = MDMA_CTXT_SEL_INT_COAL (0x8)
- QDMA_IND_CTXT_CMD.cmd.Op =
- MDMA_CTXT_CMD_WR
- MDMA_CTXT_CMD_RD
- MDMA_CTXT_CMD_CLR
- MDMA_CTXT_CMD_INV
中断引擎查找中断上下文后,中断引擎会写入中断聚合环。中断引擎还会以新的 PIDX、颜色和中断状态来更新中断上下文。