Vivado远程编译并下载程序到本地xilinx开发板

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远程编译并下载程序到本地xilinx开发板_第1张图片
  寝室电脑中的vivado如果能够访问到实验室连接了开发板的笔记本的3121端口,就可以与笔记本上的hw_server.exe通信,从而获取本地设备,vivado远程连接界面如下:
Vivado远程编译并下载程序到本地xilinx开发板_第2张图片
  实验室电脑通常是连接校园网或者手机热点,他们的特点是都只有动态分配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。

详细操作步骤:

  1. 云服务器与寝室PC配置好frps和frpc内网穿透服务,能够在实验室用笔记本通过RDP协议实现远程桌面连接。

  2. 寝室端PC安装vivado,获取license, 能正常使用,我安装的是vivado2019.2。

  3. 在寝室PC的vivado安装目录下, 将“Vivado\2019.2\bin\unwrapped\win64.o”里的hw_server.exe和“Vivado\2019.2\data\xicom\cable_drivers\nt64\digilent” 里的install_digilent.exe复制到笔记本端,前者是映射后者是驱动。

  4. 在实验室笔记本上也配置frpc并启动,我这里配置frpc.ini如下,为了方便服务器和本地我都是用的默认3121端口,建议local_port用hw_server默认的3121,服务器端口看需求自己随便分配。
    Vivado远程编译并下载程序到本地xilinx开发板_第3张图片

  5. 打开云服务器的防火墙管理页面,开放remote_port对应的端口,至此静态IP得到解决。
    Vivado远程编译并下载程序到本地xilinx开发板_第4张图片

  6. 实验室笔记本打开刚才复制过来的install_digilent.exe,安装好此驱动。

  7. 实验室笔记本双击打开hw_server.exe(无需安装),连接好xilinx开发板jtag,并打开电源。

  8. 远程控制寝室PC完成verilog的编写、综合、生成bitstream。

  9. 点击寝室PC是左侧 program and debug 下的open hardwell manager中的open target, 点open new target :Vivado远程编译并下载程序到本地xilinx开发板_第5张图片

  10. 填写云服务器IP和端口号:Vivado远程编译并下载程序到本地xilinx开发板_第6张图片

  11. 连接好后,vivado界面出现设备,即成功了。
    Vivado远程编译并下载程序到本地xilinx开发板_第7张图片

  12. program device即可下载程序:
    Vivado远程编译并下载程序到本地xilinx开发板_第8张图片

补充:添加开机自启动项

  关机后,本地端的frpc.exe、hw_server.exe需要再次打开才能连接,我们可以添加简单的开机自启动脚本让这两项自启动即可开机即连。
  配置过frpc的都会了解到借助数行代码的xxx.vbs脚本,再放到“C:\Users\当前用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup” 即可以实现开机自启,如下:

dim objShell 
set objShell=wscript.createObject("WScript.Shell") 
iReturnCode=objShell.Run("C:\WWW\frp\frpc.exe -c C:\WWW\frp\frpc.ini",0,TRUE)

  同理,hw_server.exe也可以用同样方法自启动:

dim objShell 
set objShell=wscript.createObject("WScript.Shell") 
iReturnCode=objShell.Run("C:\WWW\hw_server\hw_server.exe",0,TRUE)

  注意脚本中的路径改为实际.exe的存放路径。
  怎样看有没有自启动呢? 开机后,打开任务管理器查看启动项,若有上述两个程序即可。

再补充下:添加两个开机自启动项文件的.vbs文件定义的变量 objShell 要不一致才行,一致的话似乎会导致另一个开机自启不了。

2021.8 补充:frpc.exe的开机自启动总是会出现问题,那就只能手动点vbs启动了。

2021.9 补充:和 frpc.exe自启动不成功杠上了 —— 本地组策略中添加启动脚本,目前终于没问题了,详细操作步骤见我的另一篇博客–frpc.exe的开机自启动。 >o<

最后,如果觉得有帮助就点个赞吧, 攒点积分

你可能感兴趣的:(FGPA,fpga,嵌入式)