骚操作,尝试使用Xilinx XVC协议,通过Jlink来下载调试Xilink zynq FPGA芯片

本文作者分享了如何使用JLink替代Xilinx原装下载线,通过Xilinx Virtual Cable (XVC)实现在Zynq芯片上的高速调试,包括XVC原理、服务器搭建及与Vivado集成的过程,展示了改造后的下载速度显著提升。

最近一直在玩zynq芯片,手头使用的Xilinx Platform USB Cable 下载线真是辣鸡,速度慢如蜗牛,每次下载bit文件或者烧写flash文件都要大半天,实在是难以忍受。逻辑分析仪看了下xilinx的下载线,速度只有6.25M,并且数据间隔非常大,不懂这线的开发者咋想的,这总线利用率真是低到爆了

上图为xilinx DLC 10下载线波形,惨不忍睹!

为了不浪费生命在下载等待时间上,我打算找找看有没有别的仿真调试选择。经过一番查找后发现Xilinx的仿真器好像选择不是很多,要么贵死要么慢死,望着桌子上的一堆板子,突然突发奇想能不能用手头的Jlink来调试zynq芯片呢?

然后习惯性的先去一顿搜索看看有没有这样使用的先例。然鹅找了很久,也没有见过有人这样用的,xilinx官方vivado 并不支持jlink,segger也没出jlink插件可以给xilinx用,所以好像这条路行不通。不过在搜索过程中发现了xilinx提供了一个叫 Xilinx Virtual Cable 的东西,详情可以自己搜一下xapp-1251这个文档,里面有详细说明。

XVC调试提供了一种虚拟调试电缆的机制,需要自建一个XVC服务端,然后vivado当做客户端连接到XVC Server,通过服务端执行具体的JTAG时序输出到芯片来进行vivado和zynq芯片之间的交互。通过XVC这种调试机制,服务端可以灵活的运行在各种硬件上,包括单片机,linux开发板,或者直接运行在pc内都可以,官方的文档例子就是把xvc服务运行在zynq开发板内,把开发板当做仿真器用,GitHub上也有人把xvc弄到了stm32或者esp32芯片上,看了下xvc的协议,非常简单,就3条命令,自己搞个tcp服务器,接收xvc命令,转换为JTAG时序,然后返回结果给xvc客户端就完事了,xilinx提供了详细的服务端例子在GitHub里面,感兴趣的可以去看看

https://github.com/Xilinx/XilinxVirtualCable/

了解了XVC后,感觉这玩意实现起来挺简单,然后把GitHub上面的XVC服务器演示代码下载下来,简单改改就移植到了window平台上,我用的VS2019,新建个工程 直接使用C语言开发,方便得很。

主要修改的地方就只有一个函数,int handle_data(),把里面的AXI to JTAG操作改为jlink命令即可,具体如下图

int handle_data(int fd) 
{
    do 
    {
        memset(cmd, 0, 32);

        if (sread(fd, cmd,
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值