Xilinx高级调试方法--远程调试

Xilinx高级调试方法--远程调试

  • [1 虚拟电缆调试](#1 虚拟电缆调试)
  • [2 FPGA设计](#2 FPGA设计)
    • [2.1 扩展配置接口](#2.1 扩展配置接口)
  • [3 PCIe-XVC驱动](#3 PCIe-XVC驱动)
    • [3.1 PCIe-XVC驱动](#3.1 PCIe-XVC驱动)
    • [3.2 XVC-Server](#3.2 XVC-Server)
  • [4 Vivado Design Suite](#4 Vivado Design Suite)
    • [4.1 同一台主机](#4.1 同一台主机)
    • [4.2 不同主机](#4.2 不同主机)

本文主要介绍Xilinx的一些高级调试方法,以及如何使用Xilinx的相关IP。

1 虚拟电缆调试

在传统的调试方法中,调试是通过JTAG接口进行监测信号的传输。赛灵思虚拟电缆 (Xilinx Virtual Cable, XVC) 允许 Vivado通过非JTAG接口连接到FPGA调试核。XVC通过PCIe链路而不是标准JTAG调试接口来执行调试。此过程称为XVC-over-PCIe,支持Vivado ILA波形捕获、VIO调试控制以及使用 PCIe 链路作为信道与其它赛灵思调试核进行交互。

使用XVC进行调试的系统架构如下图所示,主要包括几个部分:

  • XVC-over-PCIe FPGA设计
    传统上,Vivado调试是通过JTAG来执行的。默认情况下,Vivado工具可将赛灵思调试核连接到FPGA中的JTAG BSCAN资源以执行调试。为执行XVC-over-PCIe调试,此信息必须通过PCIe链路而不是JTAG电缆接口来传输。赛灵思Debug Bridge IP支持将调试网络通过PCIe扩展配置接口(PCIe-XVC-VSEC)或通过 PCIe BAR 的AXI4-Lite内存映射接口(AXI-XVC)连接到 PCIe。
    Debug Bridge IP 配置为"From PCIe to BSCAN"或"From AXI to BSCAN"之后即可为分别源于PCIe扩展功能或AXI4-Lite 接口的赛灵思调试网络提供连接点。Vivado工具自动化可将此Debug Bridge实例连接到设计中找到的赛灵思调试核,而不是将其连接到JTAG BSCAN接口。在判定将Debug Bridge连接到PCIe扩展配置空间还是AXI4-Lite之间,设计需权衡利弊。
  • PCIe-XVC驱动
    XVC-over-PCIe驱动可提供与连接到主机PC并启用PCIe的FPGA硬件资源的连接。因此,此驱动作为Linux内核模式驱动提供,用于访问位于以下位置的PCIe硬件器件。该驱动位于<Vivado_Installation_Path>/data/xicom/driver/pcie/xvc_pcie.zip。此驱动的必要组件必须添加到为特定FPGA平台创建的驱动中。此驱动用于实现 XVC-Server应用通过PCIe与FPGA进行通信所需的基本功能。
  • XVC-Server
    使用调试功能时,hw_server应用由Vivado Design Suite启动。您可通过Vivado IDE将hw_server连接到本地或远程FPGA目标。此接口同样可用于连接到本地或远程PCIe-XVC目标。主机PCIe XVC-Server应用使用TCP/IP套接字连接到赛灵思hw_server。这样即可允许Vivado(使用hw_server)和 XVC-Server 应用在同一台PC上运行或者在通过以太网连接的不同PC上运行。XVC-Server应用需在直接连接到FPGA硬件资源的PC上运行。在此情况下,FPGA硬件通过PCIe连接到主机PC。XVC-Server应用通过同样在主机PC上运行的PCIe-XVC驱动来连接到 FPGA硬件器件。
  • Vivado Design Suite
    Vivado软件启动Hardware Manager监测调试信号。

2 FPGA设计

在PCIe扩展配置接口(PCIe-XVC-VSEC)的模式下,FPGA设计中与XVC相关的设计连接如下图所示。各IP设置如下:

  • XDMA
    • PCIe ID
      • Vendor ID:1BD4
      • Device ID:903F
    • PCIe : MSIC
      • 勾选Configuration Extended Interface,使能pcie_cfg_ext
      • 勾选Add the PCIe XVC-VSEC to the Example Design,这样Open IP Example Design时在示例工程中便会有XVC-VSEC的相关逻辑。本设计也是参考示例工程的设计,其中xdma_v4_1_10_vsec_null_v1_0便是实例工程中的文件。
  • Debug Bridge
    • Debug Modes
      • Bridge Type:From PCIE to BSCAN
    • BSCAN Options
      • JTAG Fallback Mode:Internal BSCAN Primitive,JTAG通过Debug Bridge连接到调试核,如果DISABLE这一项,在JTAG无法连接调试核,下载Bit文件后,会提示"The Debug hub core was not detected",无法通过JTAG进行调试。但是不影响通过XVC的方式进行调试。
      • User Scan Chain:1
      • BSCAN Master Count:1
    • PCIe Options
      • PCIe XVC VSEC Base Address:0xEA0
      • PCIe XVC VSEC Length:0x020
      • PCIe XVC VSEC Next Pointer:0x000
      • PCIe XVC VSEC ID:0x0008
      • PCIe XVC VSEC Rev ID:0x0
  • judge:三目运算符:data = valid ? data1 : data2

2.1 扩展配置接口

在实现外部实现的配置寄存器时,"配置扩展 (Configuration Extend)"接口允许核随用户应用一起传输配置信息。下表定义了核的配置扩展接口中的端口。

端口 方向 宽度 描述
cfg_ext_read_received output 1 已接收配置扩展读取
cfg_ext_write_received output 1 已接收配置扩展写入
cfg_ext_register_number output 10 配置扩展寄存器编号
cfg_ext_function_number output 8 配置扩展功能编号
cfg_ext_write_data output 32 配置扩展写入数据
cfg_ext_write_byte_enable output 4 配置扩展写入字节使能
cfg_ext_read_data input 32 配置扩展读取数据
cfg_ext_read_data_valid input 1 配置扩展读取数据有效

如果扩展配置的不对,在对驱动进行测试时,会出现下图错误。

3 PCIe-XVC驱动

解压驱动压缩包,解压出文件夹driver_v0.4和xvcserver文件夹,driver_v0.4是生成驱动的文件夹,xvcserver是生成server应用的文件夹。

3.1 PCIe-XVC驱动

  • 修改xvc_pcie_user_config.h文件
    • 64行PCIE_VENDOR_ID:设置为XDMA IP中设置的Vendor ID 0x1BD4
    • 65行PCIE_DEVICE_ID:设置为XDMA IP中设置的Device ID
    • 77行Config_space:允许选择使用 PCIe-XVC-VSEC 或 AXI-XVC 外设。默认值AUTO会首先尝试发现PCIe-XVCVSEC,如果未找到 PCIe-XVC-VSEC,则会尝试连接至 AXI-XVC外设。
    • 79行config_vsec_id: 当"桥接类型 (Bridge Type)"配置为"从PCIE 到 BSCAN (From PCIE to BSCAN)"时,该值为在"Debug Bridge IP"中定义的 PCIe XVC VSEC ID (默认值 0x0008) 。该值仅用于检测PCIe-XVCVSEC。
    • 80行config_vsec_rev: 当"桥接类型 (Bridge Type)"配置为"从PCIe 到 BSCAN (From PCIe to BSCAN)"时,该值为在"Debug Bridge IP"中定义的 PCIe XVC VSEC Rev ID (默认值 0x0)。该值仅用于检测PCIe-XVCVSEC。
    • 83行bar_index:PCIe BAR索引,当"桥接类型"配置为"从AXI到BSCAN (From AXI to BSCAN)"时,应使用此索引值来访问"Debug Bridge IP"。此BAR索引指定为PCIe IP自定义与系统设计中可寻址的AXI外设的组合。该值仅用于检测AXI-XVC外设。
    • 84行bar_offset:PCIe BAR偏移,当"桥接类型"配置为"从AXI到BSCAN (From AXI to BSCAN)"时,应使用此偏移值来访问"Debug Bridge IP"。此BAR偏移指定为PCIe IP自定义与系统设计中可寻址的AXI外设的组合。该值仅用于检测AXI-XVC外设。
  • 编译驱动(root用户)
    • cd /driver_0.4
    • make install,驱动安装在/lib/modules/<kernel_version>/kernel/drivers/pci/pcie/xilinx/xilinx_xvc_pcie_driver.ko目录下
  • 加载驱动(root用户)
    • depmod -a,运行 depmod 命令以选择新安装的内核模块,不然后面执行modprobe命令找不到驱动
    • modprobe -r xilinx_xvc_pcie_driver,确保未加载任何旧版本的驱动
    • rmmod xdma,卸载系统中的xdma驱动,如果存在xdma驱动,加载xvc的驱动后,字符文件/dev/xil_xvc/cfg_ioc0不会出现
    • modprobe xilinx_xvc_pcie_driver,加载驱动
    • ls /dev/xil_xvc,字符文件/dev/xil_xvc/cfg_ioc0
  • 测试驱动(root用户)
    • make test,为驱动构建简单的测试程序
    • ./driver_test/verify_xil_xvc_driver,运行测试程序

3.2 XVC-Server

  • 编译应用(root用户)
    • cd ./xvcserver
    • make,编译应用
  • 启动应用(root用户)
    • ./bin/xvc_pcie -s TCP::10200,启动 XVC-Server 应用,必须在root用户下执行,不然会出现"ERROR: Failed to Open Device"的错误

4 Vivado Design Suite

Vivado Design Suite可在运行XVC-Server应用的计算机上运行,或者也可以在通过以太网网络连接的另一台计算机上远程运行。但端口必须可供运行Vivado的机器访问。

4.1 同一台主机

  • 启动Vivado Design Suite
  • 选择Open HW Manager
  • 在硬件管理器(Hardware Manager)中,依次单击"Open target" → "Open New Target" → "Next
  • 选择"Local server",然后单击"Next",这样即可在本地机器上启动hw_server, 随后它会连接到xvcserver应用。
  • 选择"Add Xilinx Virtual Cable (XVC)",在"添加虚拟电缆 (Add Virtual Cable)"对话框中,输入相应的主机名(Host name)和端口 (Port)以连接到xvcserver应用,单击"OK"。
  • 从"硬件目标 (Hardware Targets)"表中选择新添加的 XVC 目标,然后单击"Next",然后单击"Finish"
  • 在"硬件器件属性 (Hardware Device Properties)"面板中, 选择Debug Bridge目标, 并指定相应的探测.ltx文件。

4.2 不同主机

  • 在添加XVC的时候,输入的主机名(Host name)设置为XVC-Server所在主机的IP地址
  • 在"硬件器件属性 (Hardware Device Properties)"面板中, 选择Debug Bridge目标, 并指定相应的探测.ltx文件。
相关推荐
zly88653721 小时前
MLX5 Linux 驱动代码分析
linux·运维·fpga开发
ALINX技术博客3 小时前
【ALINX 实战笔记】FPGA 大神 Adam Taylor 使用 ChipScope 调试 AMD Versal 设计
笔记·fpga开发
Yesheldon12 小时前
Cadence 高速系统设计流程及工具使用三
嵌入式硬件·fpga开发·硬件架构·硬件工程·智能硬件
搬砖的小码农_Sky15 小时前
FPGA:Xilinx Kintex 7实现DDR3 SDRAM读写
fpga开发·硬件架构·硬件工程
小眼睛FPGA19 小时前
why FPGA喜欢FMC子卡?
fpga开发
tiantianuser21 小时前
NVMe简介1
fpga开发·nvme·可编程逻辑·verilogy
FPGA_ADDA1 天前
基于RFSOC ZU28DR+DSP 6U VPX处理板
fpga开发·dsp·rfsoc28dr·zu28dr·射频采集
搬砖的小码农_Sky1 天前
FPGA: Xilinx Kintex 7实现PCIe接口
fpga开发·硬件架构·硬件工程
9527华安1 天前
紫光同创FPGA实现AD9280数据采集转UDP网络传输,分享PDS工程源码和技术支持和QT上位机
网络·fpga开发·udp·紫光同创·qt上位机·ad9280
9527华安2 天前
紫光同创FPGA实现AD7606数据采集转UDP网络传输,提供PDS工程源码和技术支持和QT上位机
网络·qt·fpga开发·udp·紫光同创·ad7606