您好!
我当前正在尝试使 MSI 在基于 AM571x IDK 的定制电路板上正常工作。
根复合体是 QNX 系统。
PCIe 链路启动、数据传输正在工作。
我们现在正尝试使 MSI 中断正常工作。
根据 TRM spruhz7j 第 24.9.4.6.2.2.2节 PCIe 控制器 MSI 传输方法(EP 模式) 、MSI 传输有两种方法。
我们使用的是 HW 方法、因为它似乎是在所有示例代码中使用的方法。
我知道 MSI 是来自 EP 的出站存储器写入操作、需要出站地址转换。
为 MSI 设置出站转换的示例代码 为
/*为 EP 上的 MSI 生成设置 OB 区域*/
/*为 MSI 生成访问空间配置 OB 区域*/
regionParams.regionDir = PCIE_ATU_REGION_DIR_OUTPUT;
regionParams.tlpType = PCIe_TLP_TYPE_MEM;
regionParams.enableRegion = 1;
regionParams.lowerBaseAddr = PCIe_Window_MSI_ADDR + resSize;
regionParams.upperBaseAddr = 0;/*给定数据区大小只需要32位*/
regionparams.regionWindowSize = PCIE_WINDOW_MSI_MASK;
regionParams.lowerTargetAddr = PCIe_PCIe_MSI_BASE;
regionParams.upperTargetAddr = 0u;
RetVal = PCIe_atuRegionConfig (句柄、 PCIe_location_local、 (uint32_t) 0U、®ionParams );
我知道较低和较高的基地址是 MSI 将被写入的本地内存区域。 上下目标地址应位于 PCIe RC 存储器空间中。 所有示例代码似乎都是编写的、预期 RC 将是另一个 TI 处理器、并具有硬编码的目标地址。
是否应该读取 PCIECTRL_EP_DBICS_MSI_ADD_L32和 PCIECTRL_EP_DBICS_MSI_ADD_U32寄存器并将其用于 MSI 出站转换的目标地址?
乔