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

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

  • 1 虚拟电缆调试
  • 2 FPGA设计
    • 2.1 扩展配置接口
  • 3 PCIe-XVC驱动
    • 3.1 PCIe-XVC驱动
    • 3.2 XVC-Server
  • 4 Vivado Design Suite
    • 4.1 同一台主机
    • 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_receivedoutput1已接收配置扩展读取
cfg_ext_write_receivedoutput1已接收配置扩展写入
cfg_ext_register_numberoutput10配置扩展寄存器编号
cfg_ext_function_numberoutput8配置扩展功能编号
cfg_ext_write_dataoutput32配置扩展写入数据
cfg_ext_write_byte_enableoutput4配置扩展写入字节使能
cfg_ext_read_datainput32配置扩展读取数据
cfg_ext_read_data_validinput1配置扩展读取数据有效

如果扩展配置的不对,在对驱动进行测试时,会出现下图错误。
在这里插入图片描述

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文件。
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/433627.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CAN通信篇 - CanSM模块配置(五)

文章目录 CanSMConfigurationCanSMManagerNetworkCanSMGeneralCanSMGeneration总结Can State Manager (CanSM)模块,是CAN网络的状态管理模块,所有对CAN网络状态的请求都是通过CanSM实现。这里我们介绍一下在Davinci Configurator中CanSM模块的配置。 在CanSM模块的总线管理…

游泳耳机哪个牌子好?四大热卖游泳耳机汇总,年度首选

在当今日益注重健康生活方式的时代&#xff0c;游泳作为一项全身性的有氧运动备受青睐。然而&#xff0c;对于许多游泳爱好者来说&#xff0c;水下世界的孤独可能会让他们感到无聊。而游泳耳机的出现不仅为游泳者带来了音乐的陪伴&#xff0c;还让他们能够在水下畅享各种声音&a…

【译】WordPress Bricks主题安全漏洞曝光,25,000个安装受影响

WordPress的Bricks主题存在一个严重的安全漏洞&#xff0c;恶意威胁行为者正在积极利用该漏洞在易受攻击的安装上运行任意PHP代码。 该漏洞被跟踪为CVE-2024-25600&#xff08;CVSS评分&#xff1a;9.8&#xff09;&#xff0c;使未经身份验证的攻击者能够实现远程代码执行。它…

【MySQL】事务?隔离级别?锁?详解MySQL并发控制机制

目录 1.先理清一下概念 2.锁 2.1.分类 2.2.表锁 2.3.行锁&#xff08;MVCC&#xff09; 2.4.间隙锁 2.5.行锁变表锁 2.6.强制锁行 1.先理清一下概念 所谓并发控制指的是在对数据库进行并发操作时如何保证数据的一致性和正确性。在数据库中与并发控制相关的概念有如下几…

【企业动态】欢迎法国客户来访东胜物联,深入探讨智能化合作

本周&#xff0c;来自法国的客户莅临我司工厂进行实地参观考察。客户是一家历史悠久的设备供应商&#xff0c;其产品涵盖冷链、餐饮、农业等多个行业应用领域&#xff0c;正致力于从传统设备向智能设备转型&#xff0c;希望将设备接入物联网。在此次访问中&#xff0c;他们参观…

geoserver+mapbox-gl 离线部署矢量切片地图服务学习笔记

geoserver安装 geoserver的安装包可以在官网下载Download - GeoServer&#xff0c;想要选择版本点击Archived找到指定版本进行下载http://geoserver.org/download/ &#xff08;如果网络不稳定&#xff0c;也可以直接使用下面的下载地址&#xff09; geoserver-2.15.0.rar资…

从新手到专家:一探究竟,最佳的Excel学习网站推荐!

介绍&#xff1a;Excel是一款由微软公司开发的电子表格软件&#xff0c;是Microsoft Office套件的一部分。它通过网格形式的工作表提供数据存储、分析和可视化等功能&#xff0c;适用于个人计算机数据处理。具体介绍如下&#xff1a; 数据存储&#xff1a;Excel能够存储大量数据…

大语言模型(LLM):每个专业人士的完美助手

「大语言模型&#xff08;LLM&#xff09;革命」&#xff1a;ChatGPT如何引领工作效率新篇章 在不断发展的技术领域&#xff0c;像 ChatGPT 这样的大型语言模型 (LLM) 已成为各行业专业人士不可或缺的工具。 这篇博文探讨了大语言模型&#xff08;LLM&#xff09;在专业环境中的…

Linux第69步_依据“旧字符设备的一般模板”编写LED驱动

在编写LED驱动之前&#xff0c;先要了解和硬件有关的一些知识。 1、了解“MMU内存管理单元”以及相关函数 MMU是Memory Manage Unit的缩写&#xff0c;意思是“内存管理单元”。 老版本的Linux内核要求处理器必须有“MMU内存管理单元”&#xff0c;而现在的Linux内核已经支持…

车牌定位识别企业版

车牌定位识别企业版&#xff0c;只需要OPENCV&#xff0c;采用YOLOV8NANO检测车牌区域&#xff0c;然后使用PADDLE OCR检测车牌&#xff0c;能识别各国车牌&#xff0c;支持C,PYTHON开发 车牌定位识别企业版&#xff0c;只需要OPENCV&#xff0c;支持C,python

什么是云游戏?云游戏平台可以运行3A游戏吗?

对于不熟悉游戏行业的人来说&#xff0c;面对云游戏可能会有一个疑问——除了单机游戏&#xff0c;现在所有游戏不都是联网玩吗&#xff1f;云游戏和网络游戏有什么区别&#xff1f; 实际上&#xff0c;云游戏和传统网络游戏有着本质的不同。 传统网络游戏需要玩家先下载并在本…

【HTML】HTML基础7.1(无序列表)

目录 标签 属性 效果 注意 标签 <ul> <li>列表里要装的东西</li> <li>列表里要装的东西</li> <li>列表里要装的东西</li> </ul> 属性 type&#xff1a; circle空心圆disc实心圆square方框 效果 circle空心圆效果…

Positional Encoding 位置编码

Positional Encoding 位置编码 flyfish Transformer模型没有使用循环神经网络&#xff0c;无法从序列中学习到位置信息&#xff0c;并且它是并行结构&#xff0c;不是按位置来处理序列的&#xff0c;所以为输入序列加入了位置编码&#xff0c;将每个词的位置加入到了词向量中…

【hugggingface】批量加速下载HuggingFace上的模型

镜像网站及说明&#xff1a;https://hf-mirror.com/ 其他教程&#xff1a;如何快速下载huggingface模型——全方法总结 一、huggingface-cli方法下载 1.1安装依赖 pip install -U huggingface_hub1.2 设置环境变量 linux export HF_ENDPOINThttps://hf-mirror.comwindows …

如何挑选好的游泳耳机?游泳耳机的六大避坑指南!

游泳耳机是现代科技与运动健康完美结合的产物&#xff0c;对于热爱水上运动的朋友来说&#xff0c;一款好的游泳耳机不仅能让你在水中畅游时享受到音乐带来的乐趣&#xff0c;还能保护你的听力。然而&#xff0c;市场上琳琅满目的游泳耳机品牌和型号让人眼花缭乱&#xff0c;如…

08、MongoDB -- MongoDB 的 集合关联($lookup 和 DBRef 实现集合关联)

目录 MongoDB 的 集合关联演示前提&#xff1a;登录单机模式的 mongodb 服务器命令登录【test】数据库的 mongodb 客户端命令登录【admin】数据库的 mongodb 客户端命令 SQL 术语 与 Mongodb 的对应关系使用 $lookup 实现集合关联语法格式添加测试数据1、查询出订单数量大于6&a…

混沌工程-经典案例分享

目录 前言 案例 1、强弱依赖不合理 2、预案不生效 3、异常数据不兼容 4、监控体系缺陷 5、系统缺整体架构设计 总结 前言 我们公司从启动混沌工程到现在已经几乎覆盖了线上的所有核心业务&#xff0c;先后进行过2000次演练共挖掘出120个漏洞。这些漏洞有些得了及时修复…

C if...else 语句

一个 if 语句 后可跟一个可选的 else 语句&#xff0c;else 语句在布尔表达式为 false 时执行。 语法 C 语言中 if…else 语句的语法&#xff1a; if(boolean_expression) {/* 如果布尔表达式为真将执行的语句 */ } else {/* 如果布尔表达式为假将执行的语句 */ }如果布尔表…

Java Day2 面向对象

这里写目录标题 1、static总结1.1 代码块1.1.1 静态代码块1.1.2 实例代码块1.1.3 小例子 2、继承2.1 权限修饰符2.2 方法重写2.3 子类访问成员特点2.4子类构造器的特点 3、多态4、final、常量4.1 final4.2 常量 5 抽象类5.1 概念5.2 模板设计方法 6、接口6.1 接口新方法6.2 接口…

openEuler学习——部署MGR集群

本文介绍如何利用GreatSQL 8.0.25构建一个三节点的MGR集群。 1.安装准备 IP端口角色192.168.20.1103306mgr1192.168.20.1113306mgr2192.168.20.1123306mgr3 配置hosts解析 [rootMGR1 ~]# cat >> /etc/hosts << EOF > 192.168.20.110 MGR1 > 192.168.20.1…