[FPGA] Ubuntu 22.04 安装 Vivado 2023.1 和 PetaLinux 踩坑记录

最近在 Ubuntu 22.04 上折腾 Xilinx Vivado 2023.1 和 PetaLinux 开发环境,碰到了一些零零碎碎的问题。把解决过程记下来,方便以后自己查阅,也给遇到同样问题的朋友一个参考。

本章节所有的文件来源均来自正点原子ZYNQ7100开发板B盘, 附上链接免得兄弟们找不到:)

正点原子-ZYNQ 7035/7045/7100开发板Z100:

http://www.openedv.com/docs/boards/fpga/Z100.html

正点原子-ZYNQ 7035/7045/7100开发板Z100-资料链接B盘:

https://pan.baidu.com/s/1h0MdlUDKGMJvTB2gFiJ2lg 提取码:hdwv

一、环境说明

操作系统:Ubuntu 22.04 LTS

Vivado 版本:2023.1

PetaLinux 版本:2023.1

二、安装前的准备工作

2.1 解决 libtinfo5 缺失问题

这是 Ubuntu 22.04 安装 Vivado 最容易卡住的一步。旧版 Ubuntu 自带 libtinfo5,但 22.04 升级到了 libtinfo6。Vivado 安装程序在生成设备列表阶段需要 libtinfo.so.5,直接装 libtinfo5 会报找不到包。

解决办法是手动建一个软链接:

bash 复制代码
# 先装 libncurses5
sudo apt-get update
sudo apt-get install libncurses5

# 将 libtinfo.so.5 指向现有的 libtinfo.so.6
sudo ln -s /usr/lib/x86_64-linux-gnu/libtinfo.so.6 /usr/lib/x86_64-linux-gnu/libtinfo.so.5

验证一下:

bash 复制代码
ldconfig -p | grep libtinfo

如果同时看到 libtinfo.so.5 和 libtinfo.so.6,说明成功了。

2.2 安装其他依赖包

Vivado 和 PetaLinux 需要很多依赖,我整理了一下,直接复制执行就行:

bash 复制代码
# 安装依赖(注意:pylint3 改成了 pylint)
sudo apt-get install --fix-missing \
  iproute2 gawk python3 python2 build-essential gcc git make \
  net-tools libncurses5-dev tftpd zlib1g-dev libssl-dev flex bison \
  libselinux1 gnupg wget git-core diffstat chrpath socat xterm \
  autoconf libtool tar unzip texinfo zlib1g-dev gcc-multilib automake \
  zlib1g:i386 screen pax gzip cpio python3-pip python3-pexpect xz-utils \
  debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa \
  libsdl1.2-dev pylint

几点说明:

  • pylint3 在新版 Ubuntu 里已经没了,改用 pylint

  • python 要写成 python2,因为系统默认只带 python3

  • 加了 --fix-missing 参数,防止网络问题导致中断

另外,Vivado 安装最后阶段可能在 "Generating installed device list" 卡住,可以提前装这个:

bash 复制代码
sudo apt-get install libcanberra-gtk-module

2.3 下载安装包

从 Xilinx/AMD 官网下载:

  • Vivado 2023.1 安装包

  • PetaLinux 2023.1 安装包(.run 文件)

2026年5月26日 更新, 当前已经无法使用这个方法下载了, 建议使用正点原子的资料.

三、安装 Vivado 2023.1

3.1 解压安装包

bash 复制代码
tar -xzf Xilinx_Unified_2023.1_0507_1903.tar.gz -C /opt/Xilinx

注意目标目录需要有足够空间(解压预留 150GB, 安装需要额外预留至少300G)。

3.2 运行安装程序

bash 复制代码
cd /opt/Xilinx
sudo ./xsetup

图形界面出来后,建议选择:

Vivado HL System Edition(包含 Vitis 和 HLS)

勾选需要的器件家族(如果空间有限,只选手头开发板对应的系列)

安装路径保持默认或改成 /tools/Xilinx

执行 sudo ./xsetup 后,安装向导会启动。上图是 2024.2 版本的组件选择界面,2023.1 的界面布局基本一致,可以参考。

1. Design Tools(设计工具)

组件 说明 建议
Vitis Unified Software Platform 统一软件平台,包含了 Vivado、Vitis HLS 等核心工具。勾选后会展开子选项 必选
Vitis 嵌入式软件开发和加速应用开发套件 必选
Vitis IP Cache IP 缓存,加快首次打开工程的速度 推荐勾选
Vivado FPGA 逻辑设计主工具 必选
Vitis HLS 高级综合,C/C++ 转 RTL 推荐勾选
Vitis Networking P4 P4 网络编程支持 不需要可以不选
Vitis Model Composer MATLAB/Simulink 工具箱,包含原 System Generator for DSP 的功能 用不到可以不选
Power Design Manager (PDM) 功耗评估工具,用于 Versal、UltraScale+、Kria 系列 按需选择
DocNav 文档浏览器,可离线查阅 Xilinx 文档 看个人习惯

2. Devices(器件支持)

这是占用磁盘空间的大头,只勾选你手里开发板对应的器件系列,不要全选。

选项 包含系列 建议
Install devices for Alveo and edge acceleration platforms Alveo 加速卡、Edge 平台 没有 Alveo 卡可以不选
Install Devices for Kria S0Ms and Starter Kits Kria 核心板和套件 用 Kria 开发板才选
Devices for Custom Platforms 自定义平台,下面可进一步选择 展开后按需选择
SoCs Zynq-7000、Zynq UltraScale+ MPSoC/RFSoC 用 Zynq 系列就选
7 Series Artix-7、Kintex-7、Virtex-7、Spartan-7 用 7 系列 FPGA 就选
UltraScale Kintex UltraScale、Virtex UltraScale 按需
UltraScale+ Zynq UltraScale+、Kintex/Virtex UltraScale+ 常见,推荐勾选
Versal ACAP Versal AI Core、Prime、Premium 等 用 Versal 才选
Engineering Sample Devices 工程样片支持 一般不用选

四、安装 PetaLinux 2023.1

4.1 解压 .run 文件

bash 复制代码
chmod +x petalinux-v2023.1-05010539-installer.run
./petalinux-v2023.1-05010539-installer.run --dir /opt/pkg/petalinux/2023.1

注意:安装路径不能是 /opt/petalinux 这种需要 root 权限的目录,建议装在自己的家目录下,或者用 --dir 指定一个有写权限的地方。

4.2 设置环境变量

bash 复制代码
source /opt/pkg/petalinux/2023.1/settings.sh

同样加到 ~/.bashrc 里。

验证一下:

bash 复制代码
petalinux-version

4.3 离线编译配置(可选)

如果网速不好,可以从官网下载 sstate-cache 和 downloads 离线包。

解压 sstate-cache(注意是 .rar 格式):

bash 复制代码
sudo apt-get install unrar
unrar x sstate_arm_2023.1_05010539.rar /opt/xilinx/peta_sstate/

解压 downloads 包(通常是 .tar.gz):

bash 复制代码
mkdir -p ~/petalinux_2023.1/downloads
tar -zxvf downloads_2023.1_05010539.tar.gz -C ~/petalinux_2023.1/downloads

然后在 petalinux-config 里设置:

Local sstate feeds url:指向解压后的 sstate 目录中的 arm 文件夹

Local downloads directory:指向 downloads 目录

五、可能遇到的问题汇总

问题现象 原因 解决办法
安装时提示 "Please use standard Latin letters" 注册信息里用了中文或特殊符号 改成纯英文,去掉逗号括号等
"export compliance verification failed" IP 地址和注册国家不一致 关闭 VPN,提交审查表
"无法定位软件包 libtinfo5" Ubuntu 22.04 没有这个包 用 ln 命令创建软链接
"无法定位软件包 pylint3" 新版 Ubuntu 改名了 改用 pylint
安装最后卡在 "Generating installed device list" 缺少图形库 sudo apt install libcanberra-gtk-module
petalinux-build 时网络报错 默认会去外网下载源码 配置本地 downloads 和 sstate 路径

六、一点经验

尽量离线编译:PetaLinux 默认会从外网拉源码,速度慢而且容易失败。提前把 sstate-cache 和 downloads 下好,能省不少时间。

磁盘空间要预留够:Vivado 装完大约 100GB,PetaLinux 工作目录随便一个工程也能到 10-20GB,加上源码包,500GB 起步比较稳妥。

不要随便改路径:装完 PetaLinux 后如果移动了目录,settings.sh 里写死的路径会失效。要么重装,要么手动改脚本里的路径。

遇到依赖问题先查版本:很多 .deb 包在新版 Ubuntu 里改名或取消了,用 apt-cache search 搜一下实际包名再装。

基本上做完这些,Vivado 和 PetaLinux 就能正常跑起来了。如果遇到别的坑,欢迎留言讨论。

相关推荐
Saniffer_SH13 小时前
【高清视频】Gen6 服务器还没到,Gen6 SSD 怎么测?Emily 现场演示三种测试环境
人工智能·驱动开发·测试工具·缓存·fpga开发·计算机外设·压力测试
暮云星影14 小时前
全志linux开发屏幕适配(二)`HDMI`驱动适配说明
linux·arm开发·驱动开发
凡人叶枫14 小时前
Effective C++ 条款38:通过复合塑模出 has-a 或 \“根据某物实现出\
linux·开发语言·c++·windows
charlie11451419114 小时前
嵌入式Linux驱动开发——从轮询到中断
linux·开发语言·驱动开发·嵌入式
无限进步_14 小时前
【Linux】系统级文件I/O与文件描述符深度剖析
linux·运维·服务器
ShineWinsu14 小时前
对于Linux:线程局部存储(TLS)和线程封装的解析
linux·c++·面试·线程·tls·线程封装·线程局部存储
2023自学中14 小时前
imx6ull开发板,sd卡启动运行linux,手动给开发板的 emmc 做分区、烧系统
linux·嵌入式·开发板
暮云星影14 小时前
瑞芯微rk3566开发FIT Secure Boot
linux·arm开发·驱动开发·安全
biter down15 小时前
2:Ubuntu 22.04 LTS 的完整下载教程
linux·运维·ubuntu
零陵上将军_xdr15 小时前
为什么DCL单例要加volatile?——CPU乱序执行与内存屏障
java·linux