Vivado远程编译并下载程序到本地xilinx开发板
关键词: vivado 远程烧写 frp FPGA xilinx 云服务器
需求分析:
项目需要,最近需要把FPGA程序从altera移植到xilinx平台,开发环境要从quartus ii换到vivado。现在有条件,
1.寝室有一台安装了vivado2019.2软件的PC(win10,性能较好、综合编译快),
2.实验室未安装vivado软件的笔记本(win10,用了三四年,安装了各种杂七杂八的软件,较慢),
3.腾讯云轻量服务器一年使用期限(centos7,5Mbit带宽,有固定ipv4地址),
4.已经利用frp实现了内网穿透(实现来实验室笔记本通过访问服务器端口远程控制寝室电脑,可以远程完成solidworks的3d建模、远程浏览网页、远程百度网盘等等正常远程操作)。
现在,可以在远程控制寝室PC用vivado进行写代码、编译综合,但是硬件开发板在实验室不能直接通过USB下载器插到寝室电脑USB口,在笔记本不安装占用空间44.2G的vivado前提下,如何将程序烧录到本地开发板?
问题分析:
vivado提供了一个远程烧录的服务hw_server.exe,这个服务使用教程百度上很多,但是这些教程都是要求寝室、实验室两端电脑都要安装多达44.2G的vivado软件,而且似乎也需要被访问端具有静态IP,这于大多人来说都是不满足的。可以尝试,如果把连接手机热点或者校园网的动态IP(百度IP,或者cmd下 ipconfig)作为目标IP,vivado是找不到这个远程设备的。
所以,首要解决静态IP问题,其次想办法不在实验室笔记本安装vivado也能下载。
实际上,可以把hw_server.exe理解为一个映射本地xilinx设备到tcp上的中转工具,通讯端口默认为3121,hw_server界面如下:
寝室电脑中的vivado如果能够访问到实验室连接了开发板的笔记本的3121端口,就可以与笔记本上的hw_server.exe通信,从而获取本地设备,vivado远程连接界面如下:
实验室电脑通常是连接校园网或者手机热点,他们的特点是都只有动态分配IP,而不具备静态IP(静态IPV4早快完了,多珍贵啊,哪能随便有)。那怎么连接呢? Bingo,答案就是frp内网穿透——把本地的IP端口映射到具有静态IP的服务器端口,访问服务器的静态IP端口等同于访问被映射端的端口,了解frp的应该秒懂。哈,突然觉得,这个轻量服务器的静态IP的价值好像远大于它本身微乎其微的计算能力。frp本身的教程可以另行百度,也可以参考知乎“稚晖君”的教程文章,此处不赘述。
静态IP通过frp解决了,但还有个问题,hw_server.exe不带驱动,不能识别设备的。这样,vivado即使能远程连接到实验室的笔记本的hw_server进程,但是却显示无设备。难道又要在笔记本上安装vivado来获取驱动?那不又绕回来了吗?答案当然是否定的。vivado这点还是很良心的,只需要安装一个20M小驱动——install_digilent.exe即可识别,而且安装vivado的时候已经提供了,而不需要全部安装44.2G的vivado。
详细操作步骤:
-
云服务器与寝室PC配置好frps和frpc内网穿透服务,能够在实验室用笔记本通过RDP协议实现远程桌面连接。
-
寝室端PC安装vivado,获取license, 能正常使用,我安装的是vivado2019.2。
-
在寝室PC的vivado安装目录下, 将“Vivado\2019.2\bin\unwrapped\win64.o”里的hw_server.exe和“Vivado\2019.2\data\xicom\cable_drivers\nt64\digilent” 里的install_digilent.exe复制到笔记本端,前者是映射后者是驱动。
-
在实验室笔记本上也配置frpc并启动,我这里配置frpc.ini如下,为了方便服务器和本地我都是用的默认3121端口,建议local_port用hw_server默认的3121,服务器端口看需求自己随便分配。
-
打开云服务器的防火墙管理页面,开放remote_port对应的端口,至此静态IP得到解决。
-
实验室笔记本打开刚才复制过来的install_digilent.exe,安装好此驱动。
-
实验室笔记本双击打开hw_server.exe(无需安装),连接好xilinx开发板jtag,并打开电源。
-
远程控制寝室PC完成verilog的编写、综合、生成bitstream。
-
点击寝室PC是左侧 program and debug 下的open hardwell manager中的open target, 点open new target :
-
填写云服务器IP和端口号:
-
连接好后,vivado界面出现设备,即成功了。
-
program device即可下载程序: