【黑金云课堂】FPGA技术教程Linux开发:Petalinux安装

本篇Petalinux安装 ,选自 ALINX 黑金云课堂 FPGA 免费直播课 。该课程由 ALINX 资深工程师团队倾力打造,从 0 到 1 系统化教学,帮助每位工程师跨过 FPGA 开发门槛。

🔍 ALINX :关注 ALINX,进入视频号即可查看完整黑金云课堂 FPGA 视频教程。配合笔记学习效果更佳。


Petalinux 安装

工具安装

在 Ubuntu 安装环境依赖

复制代码
sudo  apt-get  update
sudo dpkg --add-architecture i386
sudo apt-get install iproute2 gawk python3  build-essential gcc git make net-tools libncurses-dev tftpd-hpa zlib1g-dev libssl-dev flex bison libselinux1 gnupg wget 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-dev libsdl1.2-dev pylint libtinfo5

修改系统默认 shell

复制代码
sudo dpkg-reconfigure dash  

创建安装目录

复制代码
sudo  chown  -R  $USER:$USER     /opt
mkdir   -p   /opt/pkg/petalinux/2025.2
sudo  chmod   0755   /opt/pkg/petalinux/2025.2  

确保 en_US.UTF-8 语言集已安装

复制代码
sudo apt install -y locales
sudo locale-gen en_US.UTF-8 

安装 Petalinux 工具

复制代码
chmod   +x   petalinux-v2025.2-11160223-installer.run
./petalinux-v2025.2-11160223-installer.run   -d   /opt/pkg/petalinux/2025.2

Petalinux 常用命令讲解

工程创建:petalinux-create project

复制代码
petalinux-create  project  --template  <PLATFORM>  --name  <PROJECT_NAME>

硬件配置导入:petalinux-config --get-hw-description

复制代码
petalinux-config  --get-hw-description  <PATH-TO-XSA-FILE>

配置工程:petalinux-config

复制代码
petalinux-config  -c   <COMPONENT>

petalinux-build  -c   <COMPONENT>

Petalinux 测试工程创建

创建工作目录

复制代码
mkdir  -p  ~/peta_prj/linuxPsBase/hardware

拷贝 xsa 文件

将 vivado 工程导出的 xsa 文件拷贝到上一步创建的 hardware 目录中

解压离线资源文件

Downloads 目录下创建 offline_pkg 目录

将我们提供的离线资源压缩文件 sstate_aarch64_2025.2_11151021.tar.gz 和 downloads_2025.2_11151021.tar.gz 分别解压到 offline_pkg 目录下

配置 petalinux 环境变量

复制代码
cd   ~/peta_prj/linuxPsBase
source   /opt/pkg/petalinux/2025.2/settings.sh 

创建petalinux工程

复制代码
petalinux-create  project  --template  zynqMP  --name  petalinux
cd   petalinux

导入硬件信息,初始化 petalinux 工程

复制代码
petalinux-config   --get-hw-description   ../hardware

配置界面控制说明

导入硬件信息后会进入 petalinux 工程全局配置界面,之后可以通过petalinux-config命令再次进入 在配置界面中,使用键盘的上下方向键控制界面中间蓝色光标移动,使用键盘的左右方向键控制界面底部蓝色光标移动

如果界面中间的光标选中一个选项分支,且界面底部光标选中Select,按下键盘的回车键就会进入该选项分支界面

如果界面底部光标选中Exit,按下回车,会退出当前选项分支界面。如果光标选中Save,则会保存配置到工程中

按下键盘的/,进入配置搜索界面,通过关键词搜索相关配置。在搜索结果界面通过滚轮翻动搜索结果,通过数字键1~9快速跳转到配置选项

配置选项一般可以通过键盘的y键选中,n键取消选中

取消在线编译

进入Yocto Settings ->,取消Enable Network sstate feeds选项

设置离线编译资源路径

进入Yocto Settings -> Local sstate feeds settings ->,修改local sstate feeds url内容为解压出来的离线资源目录 sstate 的路径: /home/alinx/Downloads/offline_pkg/aarch64

进入Yocto Settings ---> Add pre-mirror url --->,修改pre-mirror url path内容为解压出来的离线资源目录 downloads 的路径,并在路径前添加file://: file:///home/alinx/Downloads/offline_pkg/downloads

选择Save保存配置,然后一直选择Exit直到退出配置界面

修改用户设备树文件

修改plnx-proj-root>/project-spec/meta-user/recipes-bsp/device-tree/files下的设备树文件system-user.dtsi

编译 petalinux 工程

复制代码
petalinux-build

合成启动镜像文件 BOOT.BIN

复制代码
petalinux-package  boot  --u-boot  --fpga  --fsbl  --force

制作包含 linux 系统启动镜像的 sd 卡

plnx-proj-root>/images/linux目录下BOOT.BINboot.scrimage.ub文件拷贝到 FAT32 格式的 SD 卡中

板卡启动测试

将 SD 卡插入板卡,板卡上拨码设置为 SD 启动模式,通过 usb 线连接板卡 PS_UART 接口和主机的 usb 接口,打开串口终端软件,上电启动

登录系统

等待系统启动完成后,输入用户名(默认用户名是 petalinux)

初次登录会提示设置用户密码,设置完成后进入系统

因为 petalinux 制作的根文件默认为 ram 类型,所以文件系统不能保存文件和配置,即重启后恢复初始状态

使用 petalinux 的 bsp 包,可以方便快速地复现别人验证好的 petalinux 工程,或者导出我们验证好的 petalinux 工程的 bsp 包供他人使用。

创建 bsp 包

复制代码
petalinux-package  --bsp   -p   ./petalinux/   --output   petalinux.bsp

使用 bsp 包

复制代码
petalinux-create  project   -n   petalinux   -s   ./petalinux.bsp

配置 SD 卡根文件系统

Petalinux 默认的根文件系统类型是 INITRAMFS,不能保存文件和配置。需要使用 sd 卡挂载根文件系统,制作一个可以保存文件和配置的板载 linux 系统。

进入全局配置界面

复制代码
petalinux-config

配置 SD 卡根文件系统

进入Image Packaging Configuration ->Root filesystem type选项,选择EXT4 (SD/eMMC/QSPI/SATA/USB)

选择Device node of SD device选项,设置根文件系统路径为/dev/mmcblk1p2

保存配置后,退出配置界面,编译 petalinux 工程,合成 BOOT.BIN 文件

使用 disks 软件对 SD 卡进行分区

将 SD 卡插入读卡器,然后将读卡器插入电脑的 USB 口

在 Ubuntu 的搜索栏中搜索 disks,打开 disks 软件

对 SD 卡重新分区

在 disks 界面中选择 SD 卡对应设备,如果 SD 卡已经有分区,需要点击分区删除图标,将所有分区删除

点击创建分区图标,创建第一个分区,分区大小设置为 1GB,分区名称为 BOOT,分区格式为 FAT

点击创建分区图标,创建第二个分区,分区大小设置为 5GB,分区名称为 ROOTFS,分区格式为 EXT4

点击分区挂载图标,手动挂载 SD 卡的两个新分区到 Ubuntu 系统

解压根文件系统到 SD 卡

复制代码
sudo   tar   -zxvf   rootfs.tar.gz   -C   /media/alinx/ROOTFS/
sudo   sync

拷贝启动镜像文件到 SD 卡

<plnx-proj-root>/images/linux 目录下 BOOT.BINboot.scrimage.ub 文件拷贝到 SD 卡的 BOOT 分区

完成拷贝后,在 Ubuntu 系统中弹出 SD 卡

板卡启动测试

将 SD 卡插入板卡,板卡上拨码设置为 SD 启动模式,上电启动

本次启动后系统就能够保存配置和文件了

应用开发工具安装

SDK 生成及安装

进入 rootfs 配置界面

复制代码
petalinux-config   -c   rootfs

配置组合包选项

复制代码
packagegroup-xilinx-audio   ---> 	[*] packagegroup-xilinx-audio 
packagegroup-xilinx-gstreamer   ---> 	[*] packagegroup-xilinx-gstreamer 
packagegroup-xilinx-matchbox   ---> 	[*] packagegroup-xilinx-matchbox 
packagegroup-xilinx-multimedia   --->	 [*] packagegroup-xilinx-multimedia 
packagegroup-networking-stack   --->	[*] packagegroup-networking-stack
packagegroup-opencv   --->	 [*] packagegroup-opencv 
packagegroup-xilinx-qt   --->	[*] packagegroup-xilinx-qt 
                     			 [*] populate_sdk_qt5 
packagegroup-xilinx-qt-extended   --->	[*] packagegroup-xilinx-qt-extended
packagegroup-core-x11   --->	 [*] packagegroup-core-x11

配置 GPU 库和 GDB 调试选项

复制代码
libs   ---> libmali-xlnx   --->	               [*] libmali-xlnx
misc   ---> gdb   --->	               [*] gdb
[*] gdbserver

编译 petalinux 工程

选择Save保存配置,然后选择Exit退出配置界面,编译 petalinux 工程

生成 SDK

复制代码
petalinux-build    --sdk

安装 SDK

复制代码
#  创建安装目录
mkdir  -p  /opt/petalinux/2025.2/aarch64
#  安装SDK
./sdk.sh   -d   /opt/petalinux/2025.2/aarch64/

QtCreator 安装及配置

安装 QtCreator 以及 Qt5 的库

复制代码
sudo   apt   update 
sudo   apt   install  qtcreator  qtbase5-dev
sudo   apt   install  qt5*

打开 QtCreator

复制代码
qtcreator  & 

添加 SDK 对应的 qmake 版本

在 QtCreator 界面中选择 Tools -> Options,进入配置界面

点击左侧 Kits 栏目,选择上方 Qt Versions 标签页

点击Add...选项,添加 /opt/petalinux/2025.2/aarch64/sysroots/x86_64-petalinux-linux/usr/bin/ 路径下的 qmake 文件

添加 SDK 对应的 C 编译器

选择上方 Compilers 标签页,点击 Add -> GCC -> C

设置 Name 为 GCC_zynqMP,Compiler path 为 /opt/petalinux/2025.2/aarch64/sysroots/x86_64-petalinux-linux/usr/bin/aarch64-amd-linux/aarch64-amd-linux-gcc

添加 SDK 对应的 C++ 编译器 点击 Add -> GCC -> C++ 设置 Name 为 G++_zynqMP,Compiler path 为 /opt/petalinux/2025.2/aarch64/sysroots/x86_64-petalinux-linux/usr/bin/aarch64-amd-linux/aarch64-amd-linux-g++

添加 SDK 对应的 GDB 调试器

选择上方 Debuggers 标签页,点击 Add,添加调试器

设置 Name 为 GDB_ZYNQMP,path 为 /opt/petalinux/2025.2/aarch64/sysroots/x86_64-petalinux-linux/usr/bin/aarch64-amd-linux/aarch64-amd-linux-gdb

点击 Apply,使之前的所有配置生效

添加 SDK 对应的 Kits

选择上方 Kits 标签页,点击 Add,添加新的开发套件

设置 File system name 为 ZynqMP,Compiler C 为 GCC_ZYNQMP,Compiler C++ 为 G++_ZYNQMP

Debugger 为GDB_ZYNQMP,Qt version 为 Qt 5.15.13(system)

点击 Apply,使配置生效,最后点击 OK,完成环境配置

创建 Qt 测试程序

创建 Qt 工程

在 QtCreator 界面中,点击File-> New File or Project

在工程创建界面中保持默认配置,点击 Choose,创建一个 Qt Widgets Application

设置工程的 Name 为 qt_demo,工程位置为/home/alinx/peta_prj/linuxPsBase/app(app目录需自己创建)

Build system、Details、Translation 配置界面保持默认选项

Kits 界面中,选择开发套件 ZynqMP

最后在 Summary 界面中点击 Finish,完成工程创建

添加头文件索引

复制代码
INCLUDEPATH += /opt/petalinux/2025.2/aarch64/sysroots/cortexa72-cortexa53-amd-linux/usr/include 

qt 界面设计

双击mainwindow.ui文件,进入设计界面

拖动设计界面左侧的Push Button组件到主界面,鼠标可以拉伸组件大小,双击组件的文字部分,修改内容为ALINX DEMO

编译 qt 工程

使用ctrl+s保存后,点击界面左下角的锤子图标,编译工程

编译完成后,可以在/home/alinx/peta_prj/linuxPsBase/app/build-qt_demo-ZynqMP-Debug目录下找到可执行程序qt_demo

制作测试 SD 卡

qt 程序运行会依赖新的 rootfs.tar.gz 里的qt库

将 SD卡的 ROOTFS 分区旧文件全部删除,解压新的 rootfs.tar.gz 文件到 SD 卡的 ROOTFS 分区

同步缓存数据后,弹出 SD 卡

执行测试程序

将 SD 卡插入板卡,板卡 dp 接口连接显示器,上电启动

系统启动完成并登录后,在串口终端中输入如下命令,执行 qt 测试程序

复制代码
export  DISPLAY=:0.0
./qt_demo 

更多细节欢迎关注我们黑金云课堂全年免费直播课黑金云课堂四月直播日历 我们将在每周二、三、四,同步推进 Verilog开发、Vitis开发、Linux开发三大系列,带你从零开始,稳扎稳打掌握 FPGA 开发全流程!

系列 内容定位
Verilog开发 硬件描述语言基础、逻辑设计、仿真调试
Vitis开发 Zynq软硬件协同、外设驱动、网络协议栈
Linux开发 嵌入式Linux系统移植、驱动编写、应用开发
相关推荐
橙子也要努力变强2 小时前
信号的处理方式与生命周期(核心机制篇)
linux·网络·c++
小此方2 小时前
Re:Linux系统篇(二)指令篇 · 一:基础六大指令精讲+Linux操作技巧——让你从小白到入门
linux·服务器
SilentSamsara2 小时前
ConfigMap 与 Secret:配置注入的四种姿势与安全边界
linux·运维·服务器·安全·微服务·kubernetes·k8s
飘忽不定的bug2 小时前
记录:RK3576 适配开源GPU驱动(panfrost)
linux·gpu·rk3576·panfrost
Lentou2 小时前
部署项目之systemd部署
linux·运维·服务器
郭庆汝2 小时前
华为昇腾服务器安装docker
运维·服务器·docker
o丁二黄o2 小时前
若依部署Nginx和Tomcat
运维·nginx·tomcat
鄃鳕2 小时前
ubuntu下将DHCP动态分配改成静态ip
linux·tcp/ip·ubuntu
凭X而动2 小时前
CentOS7搭建SFTP
linux·运维·服务器