编译和加载驱动程序 - 1.3 简体中文

UltraScale+ 器件 Integrated Block for PCI Express 产品指南 (PG213)

Document ID
PG213
Release Date
2022-11-16
Version
1.3 简体中文
所提供的 PCIe 驱动程序和软件应根据特定平台进行自定义。要完成此操作,所开发的驱动程序和软件通常会先验证供应商 ID、器件 ID、版本 ID、子系统供应商 ID 和子系统 ID,然后再尝试访问器件扩展功能或外设(如 PCIe-XVC-VSEC 或 AXI-XVC)。由于提供的驱动程序为通用型驱动程序,因此它仅验证供应商 ID 和器件 ID 以确认兼容性,然后再尝试验证 PCIe-XVC-VSEC 或 AXI-XVC 外设。

XVC 驱动程序和软件均作为 ZIP 文件提供,包含在 Vivado Design Suite 安装内。

  1. 请将此 ZIP 文件从 Vivado 安装目录复制到 FPGA 连接的主机 PC 并解压其内容。此文件位于 Vivado 安装目录内的以下路径中。

    XVC Driver and SW Path: …/data/xicom/driver/pcie/xvc_pcie.zip

    driver_*xvcserver 目录内的 README.txt 文件用于识别如何编译、安装和运行 XVC 驱动程序和软件,详细步骤汇总如下。将驱动程序和软件文件复制到主机 PC 并以具有 root 用户权限的用户身份登录后,请遵循以下步骤进行操作。

  2. 修改 driver_*/xvc_pcie_user_config.h 文件中的变量以匹配您的硬件设计和 IP 设置。请考虑修改以下变量:
    PCIE_VENDOR_ID
    PCIe® IP 自定义中定义的 PCIe 供应商 ID。
    PCIE_DEVICE_ID
    PCIe® IP 自定义中定义的 PCIe 器件 ID。
    Config_space
    允许选择使用 PCIe-XVC-VSEC 或 AXI-XVC 外设。默认值 AUTO 会首先尝试发现 PCIe-XVC-VSEC,然后,如果未找到 PCIe-XVC-VSEC,则会尝试连接至 AXI-XVC 外设。值 CONFIG 或 BAR 可用于在 PCIe® -XVC-VSEC 实现和 AXI-XVC 实现之间明确选择所期望的实现。
    config_vsec_id
    当“Bridge Type”(桥接类型)配置为“From PCIE to BSCAN”(从 PCIE 到 BSCAN)时,该值为在“Debug Bridge IP”中定义的 PCIe XVC VSEC ID(默认值 0x0008)。该值仅用于检测 PCIe® -XVC-VSEC。
    config_vsec_rev
    当“Bridge Type”配置为“From PCIe to BSCAN”(从 PCIe 到 BSCAN)时,该值为在“Debug Bridge IP”中定义的 PCIe XVC VSEC Rev ID(默认值 0x0)。该值仅用于检测 PCIe-XVC-VSEC。
    bar_index
    PCIe BAR 索引,当“Bridge Type”配置为“From AXI to BSCAN”(从 AXI 到 BSCAN)时,应使用此索引值来访问“Debug Bridge IP”。此 BAR 索引指定为 PCIe IP 自定义与系统设计中可寻址的 AXI 外设的组合。该值仅用于检测 AXI-XVC 外设。
    bar_offset
    PCIe BAR 偏移,当“Bridge Type”配置为“From AXI to BSCAN”时,应使用此偏移值来访问“Debug Bridge IP”。此 BAR 偏移指定为 PCIe IP 自定义与系统设计中可寻址的 AXI 外设的组合。该值仅用于检测 AXI-XVC 外设。
  3. 请将源文件移至您所选的目录内。例如,请使用:

    /home/username/xil_xvc or /usr/local/src/xil_xvc

  4. 请确保您具有 root 用户权限,并切换至包含驱动程序文件的目录。
    # cd /driver_*/
  5. 编译驱动程序模块:
    # make install

    内核模块对象文件将安装为:

    /lib/modules/[KERNEL_VERSION]/kernel/drivers/pci/pcie/Xilinx/xil_xvc_driver.ko

  6. 运行 depmod 命令以选择新安装的内核模块:
    # depmod -a
  7. 请确保未加载任何旧版本的驱动程序:
    # modprobe -r xil_xvc_driver
  8. 加载模块:
    # modprobe xil_xvc_driver

    如果运行 dmesg 命令,您将看到以下消息:

    kernel: xil_xvc_driver: Starting…
    注释: 您还可在内核对象文件上使用 insmod 来加载模块:
    # insmod xil_xvc_driver.ko

    但由于与旧内核存在兼容性问题,因此不推荐此方法,如非必要请勿使用。

  9. 生成的字符文件 /dev/xil_xvc/cfg_ioc0 归用户根和组根所有,并且它需要具备 660 的权限。如果此文件不允许应用与驱动程序进行交互,请更改其中的权限。
    # chmod 660 /dev/xil_xvc/cfg_ioc0
  10. 为驱动程序构建简单的测试程序:
    # make test
  11. 运行测试程序:
    # ./driver_test/verify_xil_xvc_driver

    您应可看到各项不同长度的测试成功消息,后接以下消息:

    "XVC PCIE Driver Verified Successfully!"