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 端点测试设备具有以下寄存器

  1. PCI_ENDPOINT_TEST_MAGIC

  2. PCI_ENDPOINT_TEST_COMMAND

  3. PCI_ENDPOINT_TEST_STATUS

  4. PCI_ENDPOINT_TEST_SRC_ADDR

  5. PCI_ENDPOINT_TEST_DST_ADDR

  6. PCI_ENDPOINT_TEST_SIZE

  7. PCI_ENDPOINT_TEST_CHECKSUM

  8. PCI_ENDPOINT_TEST_IRQ_TYPE

  9. 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]