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]