Other Parts Discussed in Thread: AM6442, SYSCONFIG
器件型号: AM6442
主题: SysConfig 中讨论的其他器件
我正在使用 AM6442 进行设计。
我正在使用 UDMA 将以太网数据包 RX 通过 DMA 从 CPSW3G 内核传输到 R5FSS0 内核 0、以 UDMA 作为将数据包从 CPSW3G 获取到存储器中的路径、R5F 可以从中访问这些数据包。 该部件都是正确的工作。 我可以发送和接收以太网数据包、而不会出现任何问题。
我想配置一个 RX 中断以供 IRQ 8 上的 R5FSS0 CORE0 使用。
从硬件的角度来看、TRM 显示...
1) 我的 RX 队列的 DMA 完成应该会生成一个全局事件。
2) 使用 DMASS0_INTAGGR_0_uentry0_MAP_J 寄存器将全局事件转换为本地事件 ID(根据 SPRUIM2H 第 6263 页)。
3) 然后使用 DMASS0_INTAGGR_0_ENTRY_IMPA_J 寄存器将本地事件 ID 映射到 VINT。
4) 根据 SPRUIM2H 表 9-61(第 5793 页)、VINT 72 连接到 R5FSS0 内核 0 NVIC 上的 IRQ 8。
我按如下方式配置了 DMA。
数据包 DMA 通道 16 用于以太网 RX。
振铃指数= 128
RX 源线程= 0x4500
RX 目标线程= 0x9010
RX 流程索引= 16
DMA 本身运行正常。 R5FSS0 内核 0 NVIC 中断控制器可以处理我的所有其他中断。
第一个问题是、INTAGGR 寄存器都被锁定在防火墙后面、因此我实际上无法对它们进行配置。 根据 TISCI 文档、 可以使用 TISCI_MSG_RM_IRQ_SET 消息来配置 INTAGGR。
我曾尝试使用 TISCI_MSG_RM_IRQ_SET、并使用
.valid_params = 0b111100
.src_id = 30 (DMASS0_PKTDMA_0)
.src_index = 16(以太网流索引)
.iA_id = 28 (DMASS0_INTAGGR_0)
.vint =72(因为我使用的是 vint72)
.vint_STATUS_BIT_INDEX = 8(因为 72-64=8)
.global_event = 5648
但出于某种原因、我从 DMSC 获得了 NACK、因此无法配置中断。
我成功使用 TISCI_MSG_RM_IRQ_SET 在设计的另一部分中配置 GPIOMUX_INTROUTER0。 因此、我知道我使用此消息的方法是有效的。
我怀疑这个问题是我对 TISCI 调用的论据、但很难找到这些论据应该是什么的信息。
例如、文档中没有说明数据包 DMA 事件的全局事件 ID 应该是什么。 TISCI 文档中列出了一些全局 事件范围、其中显示了 RX 流完成事件的范围为 5632 到 5807、但并不表示如果我使用流程 16、事件 ID 为 5632 + 16。 因此、我不确定该器件。
希望您能提供任何帮助。
另请注意、我 根本不使用 SysConfig 或 MCU+ SDK、因此请勿建议使用这些组件的解决方案。 我只想澄清在这种给定情况下如何使用 TISCI_MSG_RM_IRQ_SET。 由于 MCU+未经过安全认证、因此无法在此应用中使用。