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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构(二)——线性表

二、线性表 2.1线性表的定义和基本操作 2.1.1 线性表的基本概念 线性表&#xff1a;是具有相同数据类型的 n 个数据元素的有限序列。(Eg:所有的整数按递增次序排列&#xff0c;不是顺序表&#xff0c;因为所有的整数是无限的)其中n为表长&#xff0c;当n0时线性表是一个空表…

AI领域再出“王炸“----Claude3是否会成为下一个“神“

目录 一.Claude3最新发布 二.Claude3支持20万token 三.Claude3在未公开算法上取得重大突破 1.Claude 3读懂博士论文 2.量子跃迁集成&#xff1a; Claude 3智商&#xff1a;101 测试方法 测试细节 通过Karpathy挑战 Claude 3自画像&#xff0c;突破本我 从洛杉矶排到…

UR机器人装箱姿态

1.官网手册上并没有给出该打包位姿 2.一般厂家发回来的机器人都会有这个打包程序 可以运行这个程序&#xff0c;如果有的话。 3.打包点位 如果没有这个这个&#xff0c;也可以直接按下面点位来&#xff0c;都是差不多的点位&#xff0c;可以放到包装箱中的 这个是UR10的 这个…

Vulnhub靶机:Billu_b0x

一、介绍 运行环境&#xff1a;Virtualbox 攻击机&#xff1a;kali&#xff08;192.168.56.101&#xff09; 靶机&#xff1a;Billu_b0x&#xff08;192.168.56.107&#xff09; 目标&#xff1a;获取靶机root权限和flag 靶机下载地址&#xff1a;https://download.vulnhu…

智慧城市中的数据力量:大数据与AI的应用

目录 一、引言 二、大数据与AI技术的融合 三、大数据与AI在智慧城市中的应用 1、智慧交通 2、智慧环保 3、智慧公共安全 4、智慧公共服务 四、大数据与AI在智慧城市中的价值 1、提高城市管理的效率和水平 2、优化城市资源的配置和利用 3、提升市民的生活质量和幸福感…

Vue+腾讯地图-实现关键词输入提示功能

不废话&#xff0c;上代码~~~ 效果图&#xff1a; 1、先去腾讯地图后台创建自己的应用获取到应用的 Key 腾讯地图后台地址&#xff1a;腾讯位置服务 - 立足生态&#xff0c;连接未来 创建应用的 Key 如下&#xff1a; 2、在项目中添加腾讯地图API的js插件&#xff0c;如…

CCF-A推荐会议 安全界顶会ACM CCS‘24 4月29日第二轮投稿!共建更安全的数字世界!

会议之眼 快讯 第31届ACM CCS (ACM Conference on Computer and Communications Security)即计算机和通信安全会议将于 2024 年 10月14日-18日在美国盐湖城举行&#xff01;CCS是美国计算机协会(ACM)安全、审计与控制特别兴趣小组(SIGSAC)主办的一年一度的重要会议。是SIGSAC的…

Mint_21.3 drawing-area和goocanvas的FB笔记(三)

一、改变goocanvas线条自动画线时间间隔 通过系统SIGALRM信号触发&#xff0c;每秒画一条线对于慢温湿度等慢变信号可以应付&#xff0c;但对于快速信号1秒的间隔就太慢了。可以改变方式&#xff0c;通过另外的线程&#xff0c;完成要做的任务。 1. 线程的回调函数 myfunc 2…

Python读取influxDB数据库

1. influxDB连接 首先用InfluxDBStudio软件连接influxDB数据库来查看所有表&#xff1a; 2. 写sql语句来查询数据 然后和平时写sql查询语句一样&#xff0c;先创建连接client&#xff0c;然后调用其query函数来查询获取数据 self.client influxdb.InfluxDBClient(hostinflu…

抖店怎么做起来?2024新版操作逻辑,做项目要做一米宽万米深

我是王路飞。 不知不觉间&#xff0c;我已经在抖音电商这条赛道深耕走过了四年。 这四年里&#xff0c;我们有了自己的黑标品牌旗舰&#xff0c;有了自己的仓库配套周边&#xff0c;有了自己的模式体系人员&#xff0c;有了数不清的类目和产品操作经验。 收获着身后团队伙伴…

EdgeX Foundry - 连接 MQTT 设备

文章目录 一、概述1.安装说明2.MQTT 设备模拟器2.1.模拟器设计2.2.Spring Boot 程序源码2.2.1.MQTT2.2.2.JsonUtils2.2.3.Device 2.3.程序配置 二、连接 MQTT 设备1.docker-comepse2.设备配置文件3.启动 EdgeX Foundry4.访问 UI4.1. consul4.2. EdgeX Console 5.创建 MQTT 设备…

2024年字节跳动+京东+美团面试总结,程序员经验分享

现在的IT行业竞争压力越来越大&#xff0c;尤其是Android开发行业。而很多Android程序员却每天都在重复CRUD,原地徘徊&#xff01; 今年年初&#xff0c;你就想改变现状&#xff0c;于是在网上刷了大量面试题&#xff0c;强行记下之后&#xff0c;开始参加面试&#xff01;但是…

微信小程序开发系列(七)·如何实现小程序页面的快速跳转、小程序样式·尺寸单位rpx以及全局样式和局部样式的区别

微信小程序开发_时光の尘的博客-CSDN博客 目录 1. 小程序样式和组件介绍 2. 如何实现页面的快速跳转 3. 小程序样式尺寸单位rpx 3.1 使用px 3.2 使用rpx 4. 全局样式和局部样式 4.1 全局样式 4.2 局部样式 1. 小程序样式和组件介绍 在开发 Web网站的时候&am…

15 实战:Kaggle房价预测 + 课程竞赛:加州2020年房价预测【李沐动手学深度学习课程笔记】

15 实战&#xff1a;Kaggle房价预测 课程竞赛&#xff1a;加州2020年房价预测【李沐动手学深度学习课程笔记】https://zhuanlan.zhihu.com/p/685343754 写在前面&#xff1a;这里格式很乱&#xff0c;代码直接去知乎copy 1 实战Kaggle比赛&#xff1a;预测房价 1.1 实现几个函…

【系统安全加固】Centos 设置禁用密码并打开密钥登录

文章目录 一&#xff0c;概述二&#xff0c;操作步骤1. 服务器端生成密钥2. 在服务器上安装公钥3.下载私钥到本地&#xff08;重要&#xff0c;否则后面无法登录&#xff09;4. 修改配置文件&#xff0c;禁用密码并打开密钥登录5. 重启sshd服务6. 配置xshell使用密钥登录 一&am…

自动化测试基础——Pytest框架之YAML详解以及Parametrize数据驱动

文章目录 一、YAML详解1.YAML作用2.YAML语法结构3.YAML数据类型3.1.对象3.2.数组3.3.标量 4.YAML的引用5.YAML类型转换 二、YAML的读写与清空1.YAML的读2.YAML的写3.YAML的清空 三、pytest的parametrize简单数据驱动四、pytest的parametrize结合yaml实现数据驱动五、解决pytest…

FreeRTOS操作系统学习——空闲任务及其钩子函数

空闲任务 当 FreeRTOS 的调度器启动以后就会自动的创建一个空闲任务&#xff0c;这样就可以确保至少有一任务可以运行。但是这个空闲任务使用最低优先级&#xff0c;如果应用中有其他高优先级任务处于就绪态的话这个空闲任务就不会跟高优先级的任务抢占 CPU 资源。空闲任务还有…

FlinkSQL ChangeLog

01 Changelog相关优化规则 0101 运行upsert-kafka作业 登录sql-client&#xff0c;创建一个upsert-kafka的sql作业&#xff08;注意&#xff0c;这里发送给kafka的消息必须带key&#xff0c;普通只有value的消息无法解析&#xff0c;这里的key即是主键的值&#xff09; CREA…

EC600模块通过AT指令接入阿里云物联网平台并发布属性

摘要&#xff1a;本文介绍一下如何通过EC600模块的AT指令&#xff0c;将设备属性值发送到阿里云物联网平台的方法。 这个模块供电可以是 5-16V 和电脑通过USB串口连接&#xff0c;4线即可。未来集成到自己的系统中的时候&#xff0c;可以直接发送指令即可。 使用的软件是FreeAT…

【Vue3】Hooks:一种全新的组件逻辑组织方式

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…