DMA/Bridge Subsystem for PCIe 的初始调试 - 4.1 简体中文

DMA/Bridge Subsystem for PCI Express 产品指南 (PG195)

Document ID
PG195
Release Date
2023-11-24
Version
4.1 简体中文

位于每个引擎范围之外的状态位可用于对子系统进行初始调试。每个通道接口均可为用户应用提供重要的状态。

表 1. 子系统的初始调试
位索引 字段 描述
7 不适用 保留
6 Run 通道控制寄存器运行位。
5 IRQ_Pending 当通道包含暂挂中断时,该位断言有效。
4 Packet_Done 在 AXIST 接口上,该位表示 EOP 位所指示的最后一项数据已转发。
3 Descriptor_Done 描述符已完成将数据从源转发到目标的传输操作。
2 Descriptor_Stop 描述符中的 Descriptor_Done and Stop 位已置位。
1 Descriptor_Completed 描述符中的 Descriptor_Done and Completed 位已置位。
0 Busy 通道描述符缓冲器不为空,或者 DMA 请求尚未完成。

读取 H2C/C2H 通道状态寄存器 0x40,查看是否寄存有任何错误。同时,检查位 [0] busy 位是否设为 1。如果设为 1,那么表示 DMA 正在等待发生某些用户事件。读取 H2C/C2H Channel Completed Descriptor Count (0x48),查看 DMA 提取的描述符数量,并基于 DMA 传输将此数量与期望的值进行比较。如果 MSIX 中断模式传输存在问题,请尝试轮询模式查看是否能够完成传输。

软件调试

使用AMD驱动程序可帮助您对某些问题进行调试。请在 DEBUG 模式下编译该驱动程序,此模式支持详细模式,可打印更多传输信息。检查任一运行位的 dmesg,查看是否已列出任一 DMA 传输的所有步骤。

鉴于已打印出用于传输的描述符,因此请检查描述符,确保正确列出了源/目标地址。检查该描述符的传输长度是否正确。确保描述符关键字正确。遵循 dmesg 的 log 日志,查看其中是否记录了任何错误。

ILA 调试

您可在 IP 的 AXI 侧的输出和输入上添加 ILA,以查看是否发生任何异常传输。您可以查看发送到此 IP 的包是否正确,以及它是否与期望的包相符。您可在 PCIe 核的 CQ/CC and RQ/RC 接口中添加 ILA,以便知晓 DMA IP 提取描述符和数据的方式。您需要使用上述所有建议来找到问题所在。