FPGA远程更新/远程调试的一种简单方法

news2025/4/26 16:36:54

a52d14f92b6773c87a8e051066baf2c4.png

之前介绍过一种远程(无线)更新的方式,详见《起飞!通过无线WIFI下载调试FPGA》,这种方式缺点有两个:一是速度较慢;二是我们的设备中需要增加一个无线设备,增加成本的同时增加了暴露的风险。这两点即无法在调试的时候使用也没办法在实际设备中使用。今天我们再介绍另一种简单方式。

下面是目前我们很多设备常用的硬件架构,这种架构中,我们可以很方便使用嵌入式设备作为“桥梁”用来调试FPGA,其实这也是XVC方案的“变种”。

201ca6401fcd07be7251a72802a44be9.png

为了演示上面的方案,使用树莓派+FPGA进行方案验证。

d3b64e2b7a74db652f829b8cfd67db8e.png 95a654f4ea58940fe9a060bc570241d9.pngXilinx 的 Platform Cable USB II

Jtag Pi

我们知道正常的调试器/下载区的JTAG接口可以兼容很多芯片,所以首先需要制作一个扩展板进行IO口电平兼容设计,硬件如下:

7fac99306c56577fb9feb282c73d3b23.png

将Jtag Pi 连接到 raspberry Pi 和在其上运行的软件应用程序,我们就有了一个便宜的远程编程器。

如何使用

将 Jtag Pi 连接到 Raspberry Pi 之上后,我们需要将 Xilinx Virtual Cable for Raspberry Pi 应用程序复制到板上。我通过 SSH 将它复制到我的主目录中。然后只需进入该目录并运行:

make

就会看到编译输出:

cc -std=gnu99 -O3   -c -o xvcpi.o xvcpi.c
cc -o xvcpi xvc

之后我们有一个编译的应用程序。运行它:

sudo ./xvcpi

完毕!

现在我们可以试一试了。

测试

我们需要将 Jtag Pi 和 FPGA 连接。

dfe3f3e5b900db49f2ce7af65e68ed66.png

引脚 Vcc 连接到 FPGA 板的 Vref。它用于对信号进行电压转换(电压取决于电路板)。

首先我们运行 Xilinx Vivado。然后从主菜单中选择Open Hardware Manager 。

68a8e67e2895f872b0b7798f0dd76d36.png

在硬件管理器中,我们将看到硬件选项卡,我们可以在其中使用连接器图标打开目标。

3bd6eb88025e1f97d31d4cdcba453858.png

之后我们将连接到本地主机 hw_server。

0ca63df0ef35b5b60314905e943ea937.png

现在右键单击 localhost 并选择Add Xilinx Virtual Cable (XVC)。现在在弹出窗口中输入 Raspberry Pi IP(WiFi 或以太网 - 取决于使用的网络)。

acff02cf5fdc6e6fd208cca9d8522027.png

连接后将看到一些已识别的设备——在我们的例子中我们看到 xc7z007s。

5f85099964acfd4872d1fb22bafa44f2.png

现在我们可以为 FPGA 选择 bit 文件并对其进行远程编程。

68298f67747f6b710145e553ba275d7a.png

测试如下,对 FPGA 进行下载需要 5 秒(Zynq 7z007s 的比特流大小约为 17Mb)。如果比特流中有调试内核,还可以读取 XADC 值或ila进行调试。

fca8e06b9134cc5143ba67c1cf51ae2f.png

项目地址

https://github.com/kholia/xvcpi

https://bitbucket.org/Mylium/xvcpi/src/master/

总结

树莓派板载了wifi和1G 网口,所以可以使用无线或者有线进行调试。对应于实际设备中,上面的代码很容易移植到新的嵌入式设备,也无需浪费时间和精力在FPGA上做远程更新的手段。

PS:Jtag Pi不是必须得,只要树莓派的IO电平和FPGA电平标准兼容即可。

1d6533df57ad2ac2301016b6deabebb5.jpeg

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

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

相关文章

DOUBLETROUBLE: 1实战演练

文章目录 DOUBLETROUBLE: 1实战演练一、前期准备1、相关信息 二、信息收集1、nmap探测目标靶机端口2、扫描目标网址目录3、访问网站,发现secret下有个图片4、将图片下载5、查看图片所含内容6、破解密码并查看7、登陆邮箱8、创建反弹shell9、上传反弹shell10、监听11…

【Android工具】更新小米电视安装小白云盘观看阿里网盘视频资源方法

微信关注公众号 “DLGG创客DIY” 设为“星标”,重磅干货,第一时间送达。 之前分享过两篇关于安卓电视看网盘资源的方法: 【Android工具】安卓TV云存储观影工具测试正常,安卓电视看电影方案小结 【Android工具】更新安卓TV云存储观…

E往无前 | 腾讯云大数据 ElasticSearch 高级功能:Cross Cluster Replication实战

前言 Elasticsearch在platinum版本中,推出了Cross Cluster Replication特性(以下简称CCR),也即跨集群远程复制。 该特性可以解决两类问题: 1,数据迁移; 2,异地备份。 本文以实战为主…

深入解读 Flink 1.17

摘要:本文整理自阿里云技术专家,Apache Flink PMC Member & Committer、Flink CDC Maintainer 徐榜江(雪尽) 在深入解读 Flink 1.17 Meetup 的分享。内容主要分为四个部分: 1. Flink 1.17 Overview 2. Flink 1.17 Overall Story 3. Fli…

这可能是最全面的Java学习路线了

大家好,我是大彬~ 我本科学的不是计算机,大四开始自学Java,并且拿到了几个互联网中大厂的offer。在学习Java这方面还是比较有经验的,下面我来分享下我整理的Java自学路线。 在这里也提醒学弟学妹们,要尽早确定以后的…

自动化Jenkins管理?使用python-jenkins管理Jenkins

点击上方蓝字⭐️关注“DevOps云学堂”,接收最新技术实践 今天是「DevOps云学堂」与你共同进步的第 26 天 如果这篇文章对您有帮助,欢迎转发点赞分享。您的关注是我持续分享的动力! 简介 本次我们将要学习JenkinsAPI接口,我们先用…

Scrapy数据爬取,Django+PyEcharts实现可视化大屏(附源码)

大家好,我是小F~ 最近有个小伙伴问我有没有基于Django的可视化大屏,小F就顺手找了一下。 于是便在GitHub上发现了一个不错的实战项目,基于qunaer长沙景点数据。 还是作者最近几天刚更新的,保真~ 项目地址: …

Rust每日一练(Leetday0010) 子串下标、两数相除、串联子串

目录 28. 找出字符串中第一个匹配项的下标 Find-the-index-of-the-first-occurrence-in-a-string 🌟🌟 29. 两数相除 Divide Two Integers 🌟🌟 30. 串联所有单词的子串 Substring-with-concatenation-of-all-words &#x…

FL Studio 21最新中文版本发布!原生插件、UI、操作优化全面更新!

FL Studio 21现已推出,提供更快、更精确的音频编辑,升级后的DAW为用户提供了更多的内容发现和改进的界面。 Image-Line发布了FL Studio 21,称其可以实现更快、更精确的音频编辑,以及对整个DAW的更多控制。 期待已久的DAW升级为用…

网络安全的学习路线是怎么样的?

在众多高大上的学习路线指导中,尝试做一股清流,把要讲清楚的都讲清楚,该学些什么,学到哪个程度进入到下一阶段的学习这些才是最重要的。 在学习之前首先要做好学习的系统规划: 1.目前市场需求主流的岗位里&#xff0…

苏州狮山广场能耗管理系统

摘要:随着社会生活水平的提高,经济的繁荣发展,人们对能源的需求逐渐增长,由此带来的能源危机日益严重。商场如何实时的了解、分析和控制商场的能源消耗已成为需要解决的迫在眉睫的难题。传统的能源消耗智能以月/季度/年为周期进行…

springboot+jsp+java高校实验室设备管理系统

本次程序软件的开发的目的就是让使用者可以通过使用该软件提高信息数据的管理效率,同时该程序软件也需要针对不同的操作用户设置对应的功能,因此,此程序的操作流程应该尽量与用户日常操作软件的行为习惯相贴合,另外,程…

国内开源的中文Docker管理工具,界面清爽,赞!

文章目录 一、docker.ui1、简介2、docker.ui安装3、启动效果 一、docker.ui 1、简介 一个用于docker容器和docker集群的可视化管理工具,您可以浏览和维护docker单节点或集群节点worker和Manager。 2、docker.ui安装 安装命令如下: docker run --name…

Selinux 安全上下文与端口控制

Selinux Selinux 的全称是Security Enhance Linux,就是安全加强的Linux。在Selinux之前root账号能够任意的访问所有文档和服务在selinux中,访问控制属性叫做安全上下文,所有客体(文件、进程间通讯通道、套接字、网络主机等&#…

创客匠人CEO蒋洪波:抓住抓住市场需求发展

拍手访谈创客匠人CEO蒋洪波:创客匠人是如何开始的?未来又将如何发展? 一、创客匠人知识付费是如何开始的? 1.从爱好出发 我本人喜欢做产品,或者说是喜欢研究产品。 得益于在研发产品上的一些天赋,我们产品…

第五十一天学习记录:C语言进阶:枚举和联合(共用体)

枚举顾名思义就是一一列举。 枚举的优点 我们可以使用#define定义常量,为什么非要使用枚举? 1、增加代码的可读性和可维护性 2、和#define定义的标识符比较枚举有类型检查,更加严谨 3、防止了命名污染(封装) 4、便于…

【Simulink】示波器图形数据导入Matlab重新绘图(论文)

版本:Matlab2019b 效果 示波器波形图片: 黑色背景,而且坐标轴字体较小,不方便修改,不能直接用在论文上面 对比 Matlab 绘图: 接下来介绍如何设置~ Simulink 设置 选择需要导入的示波器数据 点击 Vi…

termux-x11教程

小粉丝已经求稿两个星期了,不写是不行了。 termux-x11 是Termux的一个图形化项目,官方是这么介绍的。 A Termux add-on app providing Android frontend for Xwayland.安装工具 我们需要在Termux和安卓系统上安装工具以成功的运行程序。 x11-repo&am…

实现图片懒加载的5种方式

目录 1、懒加载介绍 2、实现懒加载技术的方案 3、具体实现代码 1、懒加载介绍 当页面需要展示大量图片时,如果一次性渲染所有图片,会向服务器发出大量请求,导致服务器响应慢,出现页面卡顿或崩溃等问题。采用懒加载技术只预先加…

渗透测试 | 指纹识别

0x00 免责声明 本文仅限于学习讨论与技术知识的分享,不得违反当地国家的法律法规。对于传播、利用文章中提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本文作者不为此承担任何责任,一旦造成后果请自行承担…