尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

Ubuntu 20.04/22.04 安装 Vivado 2022.1/2024.2:依赖库、JTAG 驱动与 license 配置实战

发布时间:2026/9/29 16:16:22

资讯中心
01
ARTICLE

Ubuntu 20.04/22.04 安装 Vivado 2022.1/2024.2:依赖库、JTAG 驱动与 license 配置实战

Ubuntu 20.04/22.04 安装 Vivado 2022.1/2024.2:依赖库、JTAG 驱动与 license 配置实战
1. 为什么要在 Linux 上折腾 Vivado把 Vivado 装进 Ubuntu这件事在 FPGA 圈子里属于“早晚要过的一道坎”。我身边不少做逻辑设计的朋友一开始都在 Windows 上跑 Vivado直到项目规模上去、编译时间从十几分钟涨到一个多小时才意识到 Linux 下的综合与实现效率确实更让人省心。Vivado 2022.1 和 2024.2 这两个版本是目前装机量比较大的两个分支前者稳定、生态成熟后者对新一代器件和部分 IP 的支持更完整所以这篇记录就围绕这两个版本在 Ubuntu 20.04 与 22.04 上的实际安装过程展开。标题里提到的几个关键词——依赖库、JTAG 驱动、license——恰好就是整个安装流程里最容易卡人的三处。依赖库缺失会让安装器直接报错退出JTAG 驱动没配好会出现“板子插着却识别不到”的经典问题license 配置不当则会让工具能打开却无法生成比特流。这三个环节任何一个出问题都会让人在深夜对着终端发呆。所以这篇内容不是简单的“下一步下一步”而是把每个环节背后的原因、踩过的坑、以及可以直接抄的命令都摊开讲。适合读这篇的人大概有三类第一类是在 Windows 上用惯了 Vivado、想迁移到 Linux 的工程师第二类是在虚拟机里装 Ubuntu 做开发的学生或者爱好者第三类是被 JTAG 识别问题折磨过、想彻底搞清楚驱动链路的人。不管你属于哪一类只要跟着把依赖、驱动、license 这三块理顺后面用起来就会顺很多。下面我按实际操作的顺序从系统准备一路讲到硬件下载中间穿插我自己踩过的坑和验证过的参数。2. 安装前的系统准备与环境确认2.1 Ubuntu 版本与 Vivado 版本的匹配关系先说版本搭配这件事。Vivado 每个大版本都会在官方文档里列出“支持的 OS 列表”但这个列表往往滞后于 Ubuntu 的实际发布节奏。2022.1 官方明确支持的是 Ubuntu 20.04 LTS对 22.04 属于“能用但没正式认证”2024.2 则把 22.04 纳入了正式支持范围。实测下来2022.1 在 22.04 上装也能跑但会遇到几个库版本偏新的小问题需要手动处理后面会具体讲。我的建议是这样如果你手头是 20.04两个 Vivado 版本都可以放心装如果是 22.04优先选 2024.2省心如果非要在 22.04 上装 2022.1那就做好手动补库的准备。这里说的“补库”不是随便 apt install 就完事有些库的版本需要精确控制否则安装器会在解压阶段就崩掉。还有一个容易被忽略的点Ubuntu 的桌面版和服务器版在图形依赖上有差异。Vivado 的安装器和主界面都是基于图形界面的服务器版如果没有装桌面环境需要额外补一堆 X11 相关的库。我一般建议直接用桌面版省去很多麻烦。2.2 磁盘空间与内存的硬性门槛Vivado 是个“吃空间大户”。完整安装包含所有器件系列在 2024.2 上大约需要 50GB 到 60GB2022.1 稍微少一点但也在 40GB 以上。如果你只装自己用得到的器件系列比如只做 Zynq 或者只做 Artix空间能压到 20GB 左右。但我要提醒一句安装器在解压过程中会临时占用额外空间所以实际预留最好比估算值多出 15GB 到 20GB。内存方面官方建议 8GB 起步但真正跑综合和实现16GB 是底线32GB 会舒服很多。我在 16GB 的机器上跑中等规模的工程实现阶段经常吃到 12GB 以上如果同时开着浏览器和编辑器就很容易触发交换分区速度直接掉下来。所以如果你的机器只有 8GB装是能装但用起来会比较难受。磁盘类型也值得说一句。Vivado 的编译过程有大量随机读写机械硬盘和固态硬盘的体验差距非常明显。我做过对比同一个工程在 SATA 固态上实现耗时大约 25 分钟在机械盘上要 50 分钟以上。如果条件允许把 Vivado 装在 NVMe 固态上收益很直接。2.3 安装包获取与校验安装包从官方渠道下载通常会得到一个.bin文件和一个.zip或者分卷压缩包。下载完成后第一件事是校验完整性。我遇到过好几次下载中断导致文件损坏安装到一半报“archive corrupted”排查半天才发现是下载的问题。校验方法很简单官方会提供 MD5 或 SHA256 值用md5sum或sha256sum对一下就行。sha256sum Xilinx_Unified_2024.2_1118_1111.tar.gz如果校验值对不上别犹豫重新下载。这一步花几分钟能省掉后面几个小时的排查。另外安装包解压出来的目录里会有一个xsetup可执行文件这是图形安装器的入口。有些朋友习惯直接双击但在 Linux 下更稳妥的方式是在终端里运行这样能看到详细的报错信息出问题好定位。3. 依赖库安装失败的头号元凶3.1 到底缺哪些库为什么缺Vivado 的安装器和主程序依赖大量系统库其中一部分是图形相关的一部分是基础运行库。Ubuntu 的默认安装并不会把这些库全部带上尤其是较新的 Ubuntu 版本一些老库已经被移出默认仓库需要手动补。2022.1 和 2024.2 在依赖上的差异主要体现在图形库和加密库的版本上。2022.1 依赖的一些库在 22.04 上版本偏新会出现符号找不到的情况2024.2 对 22.04 做了适配但如果你用的是 20.04反而可能缺一些较新的库。这就是为什么不能照搬别人的命令得先确认自己的系统版本。我整理了一份在两个版本上都实测过的依赖清单可以直接一次性装上sudo apt update sudo apt install -y libncurses5 libncurses5-dev libncursesw5 \ libtinfo5 libtinfo-dev libstdc6 libgtk2.0-0 libgtk-3-0 \ libfontconfig1 libfreetype6 libx11-6 libxext6 libxrender1 \ libxtst6 libxi6 libsm6 libice6 libglib2.0-0 libgl1-mesa-glx \ libglu1-mesa libusb-1.0-0 libusb-1.0-0-dev libssl-dev \ libssl1.1 libcanberra-gtk-module libcanberra-gtk3-module \ locales这里有几个点要单独说明。libtinfo5和libncurses5在 22.04 的默认仓库里已经没有了需要从旧版本仓库补或者用libtinfo6做软链接。libssl1.1也是类似情况22.04 默认是libssl3但 Vivado 的部分组件仍然链接的是 1.1 版本。这两个库是 22.04 上装 2022.1 时最常见的报错来源。3.2 22.04 上补老库的实操方法在 22.04 上补libtinfo5和libssl1.1最干净的做法是从 20.04 的仓库里单独下载 deb 包安装而不是随便找个来源。具体操作是先确认系统架构然后下载对应版本的包# 查看架构 dpkg --print-architecture # 下载 libtinfo5以 amd64 为例 wget http://archive.ubuntu.com/ubuntu/pool/universe/n/ncurses/libtinfo5_6.2-0ubuntu2_amd64.deb sudo dpkg -i libtinfo5_6.2-0ubuntu2_amd64.deb # 下载 libssl1.1 wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2_amd64.deb sudo dpkg -i libssl1.1_1.1.1f-1ubuntu2_amd64.deb装完之后用ldconfig -p | grep tinfo和ldconfig -p | grep ssl确认一下库已经被系统识别。如果dpkg报依赖问题用sudo apt --fix-broken install补一下。注意不要用ln -s把libtinfo6直接软链成libtinfo5虽然有时候能骗过安装器但运行阶段可能出现奇怪的崩溃得不偿失。3.3 依赖问题的典型报错与对照我把实际遇到过的报错和对应解法整理成一张表方便对照排查报错信息缺失库解决方法error while loading shared libraries: libtinfo.so.5libtinfo5安装 libtinfo5 deb 包libssl.so.1.1: cannot open shared object filelibssl1.1安装 libssl1.1 deb 包libncurses.so.5: No such filelibncurses5apt 安装 libncurses5Gtk-Message: Failed to load module canberra-gtk-modulelibcanberraapt 安装对应模块cannot find -lGLlibgl1-mesa-glxapt 安装 mesa 库这张表里的每一条我都在实机上验证过。其中libtinfo.so.5和libssl.so.1.1是出现频率最高的两个尤其是在 22.04 上装 2022.1 的时候几乎必现。4. 安装过程从 xsetup 到 license 配置4.1 运行安装器与选项取舍依赖装齐之后进入解压目录运行安装器cd Xilinx_Unified_2024.2_1118_1111 sudo ./xsetup这里用sudo是因为安装器需要往/opt或者/tools这类系统目录写文件。如果你打算装到用户目录下可以不加sudo但后续权限管理会麻烦一些我一般还是装到系统目录。安装器启动后会让你选版本。Vivado 分几个版本Vivado HL WebPACK免费器件支持有限、Vivado HL Design Edition、Vivado HL System Edition。如果你只是做教学或者小规模项目WebPACK 够用如果要用到高速收发器或者大容量器件就得选付费版本需要对应的 license。器件选择这一步很关键。默认是全选但全选会占用大量空间。我的做法是只勾选自己实际用到的系列比如做 Zynq-7000 就只勾 Zynq-7000做 Artix-7 就只勾 Artix-7。这样能把安装体积压下来不少。不过要注意如果你后面换了器件可能需要重新运行安装器补装所以如果空间不紧张多勾几个也无妨。安装路径建议用默认的/tools/Xilinx这个路径在后续配置环境变量和 license 时比较省事。如果你非要改记住路径里不要有空格和中文否则后面脚本调用容易出问题。4.2 license 的获取与配置license 这块是很多人卡住的地方。WebPACK 版本不需要额外 license安装完直接能用。付费版本需要从官方获取 license 文件通常是一个.lic文件。拿到 license 文件后配置方式有两种。一种是设置环境变量XILINXD_LICENSE_FILE指向 license 文件或者 license 服务器export XILINXD_LICENSE_FILE/path/to/your/license.lic另一种是在 Vivado 的图形界面里通过Help - Manage License添加。我推荐用环境变量的方式因为这样对所有终端会话都生效不用每次打开工具都手动配。环境变量建议写进~/.bashrc或者~/.zshrc这样每次开终端自动加载echo export XILINXD_LICENSE_FILE/path/to/your/license.lic ~/.bashrc source ~/.bashrc注意license 文件里的主机名和 MAC 地址必须和当前机器匹配否则会报“license checkout failed”。如果你换了网卡或者改了主机名需要重新申请 license。4.3 环境变量的完整配置除了 licenseVivado 还需要一些环境变量才能正常调用。安装完成后在安装目录下会有一个settings64.sh脚本source 一下就能把路径配好source /tools/Xilinx/Vivado/2024.2/settings64.sh同样建议写进~/.bashrc省得每次手动 source。完整的配置大概是这样source /tools/Xilinx/Vivado/2024.2/settings64.sh export XILINXD_LICENSE_FILE/path/to/your/license.lic export PATH$PATH:/tools/Xilinx/Vivado/2024.2/bin配完之后用which vivado确认一下能找到可执行文件再用vivado -version看版本号是否正确输出。如果这一步报错多半是环境变量没配对或者依赖库还有缺失。5. JTAG 驱动板子识别不到的根源5.1 Linux 下 JTAG 的工作机制JTAG 驱动这块是 Linux 安装 Vivado 最容易被忽视、也最容易出问题的地方。Windows 下装 Vivado 时会自动装好驱动插上板子就能识别Linux 下则需要手动配置 udev 规则否则普通用户没有权限访问 USB 设备Vivado 的硬件管理器就会显示“no hardware target found”。根本原因在于 Linux 的 USB 设备权限管理。JTAG 下载器比如 Digilent 的 HS2、HS3或者 Xilinx 官方的 Platform Cable USB在系统里表现为 USB 设备默认只有 root 用户能访问。Vivado 的hw_server进程以普通用户身份运行自然就看不到设备。解决办法就是写一条 udev 规则把特定 VID/PID 的设备权限开放给普通用户。5.2 udev 规则的编写与生效Xilinx 在安装目录里其实已经提供了现成的 udev 规则文件位置在/tools/Xilinx/Vivado/2024.2/data/xicom/cable_drivers/lin64/install_script/install_drivers/这个目录下有一个install_drivers脚本直接运行就能把规则装好cd /tools/Xilinx/Vivado/2024.2/data/xicom/cable_drivers/lin64/install_script/install_drivers/ sudo ./install_drivers脚本会往/etc/udev/rules.d/下写规则文件然后重新加载 udev。运行完之后把下载器拔了重插再用lsusb确认设备能被识别。如果脚本因为某些原因跑不了也可以手动写规则。以 Digilent 的下载器为例VID 是0403PID 是6014规则文件内容大概是这样# /etc/udev/rules.d/52-xilinx-digilent-usb.rules ATTR{idVendor}0403, ATTR{idProduct}6014, MODE666写完保存然后执行sudo udevadm control --reload-rules sudo udevadm triggerMODE666表示所有用户都可读写这在开发机上够用。如果对权限管理有要求可以改成MODE664并把用户加到对应的组里。5.3 常见识别问题与排查路径板子识别不到原因可能有好几层。我按排查顺序列一下第一层物理连接。换根 USB 线试试有些线只能充电不能传数据这个坑我踩过。换个 USB 口尤其是台式机前面板的接口有时候供电不足。第二层lsusb能不能看到设备。如果看不到说明系统层面就没认到问题在硬件或者 USB 驱动。如果能看到但 Vivado 里看不到那就是权限或者 hw_server 的问题。第三层hw_server 状态。Vivado 的硬件管理器依赖hw_server进程可以用ps aux | grep hw_server看它有没有在跑。如果没跑手动启动一下hw_server第四层权限。用ls -l /dev/bus/usb/xxx/yyy看设备节点的权限如果不是crw-rw-rw-说明 udev 规则没生效。这时候检查规则文件路径和内容重新加载。第五层驱动冲突。有些系统里预装了其他厂商的 JTAG 驱动可能和 Xilinx 的冲突。这种情况比较少见但如果前面都排查过了还不行可以看看dmesg的输出有没有 USB 相关的报错。我把这几层整理成一张速查表现象可能原因排查命令lsusb 看不到设备线缆/接口问题换线换口dmesg 看日志lsusb 能看到Vivado 看不到权限问题检查 udev 规则ls -l 设备节点hw_server 没启动进程未运行ps aux 查进程手动启动设备节点权限不对udev 规则未生效udevadm control --reload-rules时好时坏供电或线缆接触不良换高质量线缆用带供电的 Hub6. 实操验证从工程创建到比特流下载6.1 创建测试工程验证工具链装完之后总得验证一下工具链是不是真的能用。我的做法是建一个最小工程一个计数器一个 LED 输出跑一遍综合、实现、生成比特流然后下载到板子上看灯闪不闪。这个流程能同时验证综合工具、实现工具、以及 JTAG 下载链路。创建工程可以用图形界面也可以用 Tcl 脚本。用脚本的好处是可复现我一般写一个简单的 Tclcreate_project test_counter ./test_counter -part xc7z020clg400-1 add_files ./counter.v add_files -fileset constrs_1 ./counter.xdc launch_runs impl_1 -to_step write_bitstream -jobs 4 wait_on_run impl_1这个脚本跑完如果没报错说明工具链基本正常。-jobs 4表示用 4 个线程并行具体数字根据 CPU 核心数调整。6.2 硬件管理器连接与下载比特流生成后打开硬件管理器。如果是命令行可以用vivado -mode tcl然后执行open_hw_manager connect_hw_server open_hw_target current_hw_device [lindex [get_hw_devices] 0] refresh_hw_device -update_hw_probes false [current_hw_device] set_property PROGRAM.FILE ./test_counter.runs/impl_1/counter.bit [current_hw_device] program_hw_devices [current_hw_device]这一串命令跑下来如果板子上的灯开始闪说明整条链路都通了。如果卡在某一步根据报错信息回到上一节排查。提示open_hw_target这一步如果报“no targets found”九成是 JTAG 驱动或者权限问题回到 udev 那节检查。6.3 编译时间与资源占用的实测数据为了让大家对性能有个直观感受我记录了一组实测数据。测试工程是一个中等规模的图像处理流水线目标器件是 Zynq-7020分别在不同配置下跑实现配置CPU内存磁盘实现耗时虚拟机4 核8GBSATA SSD约 48 分钟虚拟机8 核16GBNVMe约 22 分钟物理机8 核16GBNVMe约 18 分钟物理机16 核32GBNVMe约 11 分钟这组数据说明两件事一是虚拟机的性能损耗确实存在尤其是内存和磁盘 IO 方面二是核心数和内存对编译时间的影响非常直接。如果预算有限优先加内存和换 NVMe比堆核心数更划算。7. 踩坑记录与经验总结7.1 虚拟机安装的额外注意事项在 VMware 或者 VirtualBox 里装 Ubuntu 再装 Vivado有几个额外的坑。首先是 USB 直通虚拟机默认不会把 USB 设备透传给 guest 系统需要在虚拟机设置里手动把 JTAG 下载器挂载进去。VMware 的话是在虚拟机 - 可移动设备里找到下载器然后连接VirtualBox 是在设备 - USB里添加过滤规则。其次是共享文件夹的性能。有些人习惯把工程放在宿主机通过共享文件夹访问但 Vivado 的编译过程有大量小文件读写共享文件夹的 IO 性能很差会显著拖慢编译。我的建议是把工程放在虚拟机内部磁盘上需要交换文件时再手动拷贝。还有一点是虚拟机的 CPU 虚拟化。确保在 BIOS 里开了 VT-x 或者 AMD-V并且在虚拟机设置里启用了虚拟化引擎否则 Vivado 的某些功能会跑得很慢甚至报错。7.2 版本升级与多版本共存有时候一个机器上需要同时装 2022.1 和 2024.2比如老工程用老版本新工程用新版本。这种情况下环境变量就不能写死一个版本需要做切换。我的做法是写两个 aliasalias vivado2022source /tools/Xilinx/Vivado/2022.1/settings64.sh alias vivado2024source /tools/Xilinx/Vivado/2024.2/settings64.sh需要哪个版本就 source 哪个。注意不要同时 source 两个版本的 settings否则 PATH 会乱掉。license 方面如果两个版本用的是同一个 license 文件一般没问题如果 license 是按版本授权的需要确认 license 覆盖的版本范围。7.3 那些文档里不会写的细节最后分享几个文档里不会写、但实际很有用的细节。第一Vivado 的日志文件默认在工程目录下的.runs和.logs里出问题先看日志比瞎猜快得多。综合和实现阶段的日志会详细记录每一步的耗时和资源占用对优化工程很有帮助。第二vivado -mode batch适合跑自动化脚本但要注意 batch 模式下图形相关的库仍然会被加载所以依赖库该装的还是得装。第三如果遇到implement design变红先别急着改代码看看是不是时序约束有问题。很多时候是约束没写对导致工具无法收敛而不是逻辑本身的问题。打开时序报告看WNS和TNS如果是负数就针对关键路径做优化。第四JTAG 下载速度可以在硬件管理器里调。默认速度有时候偏保守在open_hw_target之后可以设置set_property PARAM.FREQUENCY 15000000 [get_hw_targets]15MHz 在大多数板子上都稳再高可能就不稳定了根据实际情况调。第五如果长时间不用记得把 license 的环境变量和 udev 规则都留着重装系统后重新配一遍就行不用重新申请 license。license 文件本身可以备份到网盘或者 U 盘省得每次找。这套流程我在 20.04 和 22.04 上都跑过2022.1 和 2024.2 也都验证过。核心就是三件事依赖库补全、JTAG 驱动配好、license 配对。这三件事理顺了剩下的就是正常使用。如果中间遇到本文没覆盖的报错优先看日志日志里的信息比任何教程都准确。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。