ZHCAE42 June   2024 AM6442

 

  1.   1
  2.   摘要
  3.   商标
  4. 1缩写
  5. 2引言
    1. 2.1 外设组件快速互连
      1. 2.1.1 PCIe 通信的元件
        1. 2.1.1.1 根复合体
        2. 2.1.1.2 中继器
        3. 2.1.1.3 端点
      2. 2.1.2 信号
        1. 2.1.2.1 PERST
        2. 2.1.2.2 WAKE 和 CLKREQ
        3. 2.1.2.3 REFCLK
      3. 2.1.3 PCIe 常见用途
      4. 2.1.4 PCIe 聚合吞吐量
    2. 2.2 AM64x 和 AM243x 上的 PCIe 特性
  6. 3x86 作为 RC,AM64x 作为 EP
    1. 3.1 硬件环境
    2. 3.2 软件环境
      1. 3.2.1 构建应用程序
      2. 3.2.2 用法
  7. 4测试设置
    1. 4.1 适用于 LINUX 和 WIN 的通用设置
    2. 4.2 Linux 驱动程序(VFIO)
      1. 4.2.1 先决条件
      2. 4.2.2 构建
      3. 4.2.3 部署
    3. 4.3 测试应用程序使用情况
    4. 4.4 LINUX PC 的设置步骤
      1. 4.4.1 UART 控制台输出
    5. 4.5 MSI 示例
    6. 4.6 Windows PC 的设置步骤
      1. 4.6.1 先决条件
      2. 4.6.2 构建
      3. 4.6.3 部署
  8. 5PCIe 测试规范
    1. 5.1  标识和配置功能
      1. 5.1.1 测试用例
    2. 5.2  基准时钟功能
    3. 5.3  入站 ATU 和 BAR 功能
    4. 5.4  出站 ATU 功能
    5. 5.5  MSI 功能
    6. 5.6  下行中断功能
    7. 5.7  器件电源管理状态功能
    8. 5.8  功能级复位机制
    9. 5.9  传统中断机制
    10. 5.10 MSI-X 功能
    11. 5.11 热复位机制
  9. 6Windows 示例驱动程序验证
  10. 7参考资料

LINUX PC 的设置步骤

由于实现了基于 Linux VFIO 驱动程序的 RC 示例应用程序 ti-sample-vfio 以用于测试和验证,因此节 5 中所述的某些测试需要使用该应用程序。要使用 ti-sample-vfio,需要实现以下设置:

  1. PCIe 成功引导后,打开 Linux 终端并获得 root 权限:
    sudo su
  2. 在 Linux 终端中使用 lspci 命令确定 TMDS243EVM PCIe EP 器件的总线、器件和功能编号。使用 Sysconfig 中设置的供应商和器件 ID。使用以下命令进行搜索,该命令会以数字形式显示所有 PCIe 器件的相关信息:
    lspci -vtn
    AM6442
  3. 下图展示了上一命令的输出。在本例中,PCIe EP 被分配了总线 4、器件 00 和功能 0。
  4. 使用 modprobe 加载 VFIO-PCI 驱动程序:
    modprobe vfio-pci
  5. 将 TMDS243EVM PCIe EP 供应商和器件 ID 分配给 VFIO 驱动程序。

    echo "17cd 0100" > /sys/bus/pci/drivers/vfio-pci/new_id
    AM6442
  6. 检查 PCIe EP 被分配到的 IOMMU 组:
    readlink /sys/bus/pci/devices/0000:04:00.0/iommu_group
    1. 上一命令的输出可提供:分配了 IOMMU 组的 PCIe EP。
  7. 确保 EP 是此 IOMMU 组中的唯一器件:
    ls -l /sys/bus/pci/devices/0000:04:00.0/iommu_group/devices
    AM6442

    可以看出,TMDS243EVM PCIe EP 是 IOMMU 组 60 中的唯一器件。如果同一 IOMMU 组内有其他 PCIe 器件,则这些 PCIe 器件也必须绑定到 VFIO 驱动程序。

  8. 编译 ti-sample-vfio后续步骤不再需要 root 权限):
    gcc ti-sample-vfio.c -o ti-sample-vfio -g -O2
  9. 使用先前确定的参数执行 ti-sample-vfio 应用程序:
    sudo ./ti-sample-vfio 40 0 60 1 wait
    AM6442
注: ti-sample-vfio 应用程序需要以下参数才能执行:
  1. [bus]:PCIe EP 总线编号
  2. [device]:PCIe EP 器件型号
  3. [function]:PCIe EP 功能编号
  4. [IOMMU group]:PCIe EP IOMMU 组
  5. [test_mode] 仅测试用例 4.3.2 需要此参数,它指的是扩展入站 ATU/BAR 配置(请参阅相应的说明)。要启动测试用例,必须传递参数 testbars。否则,可以省略此参数,输入将解释为后续参数 [Number of MSI IRQs]。
  6. [Number of MSI IRQs]:测试 4.5.2 中描述的要测试的 MSI IRQ 的数量。如果未执行测试 4.5.2,则该参数需要设置为 1。
  7. [Number of loops]:测试程序可以执行的环路数量。此参数是可选的,可以留空。默认值是 10。
  8. [‘wait’] 此参数用于指示测试程序在测试应用程序执行期间等待用户输入。