9.4. PCI 测试功能¶
- 作者:
Kishon Vijay Abraham I <kishon@ti.com>
传统上,PCI RC 一直通过使用标准的 PCI 卡(如以太网 PCI 卡、USB PCI 卡或 SATA PCI 卡)进行验证。然而,随着 Linux 内核中 EP-core 的加入,可以配置一个可以以 EP 模式工作的 PCI 控制器作为测试设备。
PCI 端点测试设备是一种用于测试端点功能并作为其他 PCI 端点设备的示例驱动程序(使用 EP 框架)的虚拟设备(在软件中定义)。
PCI 端点测试设备具有以下寄存器
PCI_ENDPOINT_TEST_MAGIC
PCI_ENDPOINT_TEST_COMMAND
PCI_ENDPOINT_TEST_STATUS
PCI_ENDPOINT_TEST_SRC_ADDR
PCI_ENDPOINT_TEST_DST_ADDR
PCI_ENDPOINT_TEST_SIZE
PCI_ENDPOINT_TEST_CHECKSUM
PCI_ENDPOINT_TEST_IRQ_TYPE
PCI_ENDPOINT_TEST_IRQ_NUMBER
PCI_ENDPOINT_TEST_MAGIC
此寄存器将用于测试 BAR0。一个已知的模式将被写入并从 MAGIC 寄存器读回以验证 BAR0。
PCI_ENDPOINT_TEST_COMMAND
此寄存器将由主机驱动程序使用,以指示端点设备必须执行的功能。
位域 |
描述 |
---|---|
位 0 |
引发传统 IRQ |
位 1 |
引发 MSI IRQ |
位 2 |
引发 MSI-X IRQ |
位 3 |
读取命令(从 RC 缓冲区读取数据) |
位 4 |
写入命令(将数据写入 RC 缓冲区) |
位 5 |
复制命令(将数据从一个 RC 缓冲区复制到另一个 RC 缓冲区) |
PCI_ENDPOINT_TEST_STATUS
此寄存器反映 PCI 端点设备的状态。
位域 |
描述 |
---|---|
位 0 |
读取成功 |
位 1 |
读取失败 |
位 2 |
写入成功 |
位 3 |
写入失败 |
位 4 |
复制成功 |
位 5 |
复制失败 |
位 6 |
已引发 IRQ |
位 7 |
源地址无效 |
位 8 |
目标地址无效 |
PCI_ENDPOINT_TEST_SRC_ADDR
此寄存器包含 COPY/READ 命令的源地址(RC 缓冲区地址)。
PCI_ENDPOINT_TEST_DST_ADDR
此寄存器包含 COPY/WRITE 命令的目标地址(RC 缓冲区地址)。
PCI_ENDPOINT_TEST_IRQ_TYPE
此寄存器包含为 READ/WRITE/COPY 和引发 IRQ(传统/MSI)命令触发的中断类型(传统/MSI)。
可能的类型
传统 |
0 |
MSI |
1 |
MSI-X |
2 |
PCI_ENDPOINT_TEST_IRQ_NUMBER
此寄存器包含触发的 ID 中断。
允许的值
传统 |
0 |
MSI |
[1 .. 32] |
MSI-X |
[1 .. 2048] |