petalinux环境搭建

petalinux简介

PetaLinux 是赛灵思(Xilinx,现为AMD旗下)推出的嵌入式Linux开发工具套件,专为其FPGA(如Zynq、Zynq UltraScale+ MPSoC、MicroBlaze等)和自适应SoC设计。它基于Yocto Project构建,提供了一套完整的工具链,简化了嵌入式Linux系统的开发、定制和部署流程。petalinux并不是一个特殊Linux内核,而是一套开发环境配置的工具,降低uboot、内核、根文件系统的配置的工作量,可以从Vivado的导出硬件信息自动完成相关软件的配置。

petalinux安装步骤

这里选择将petalinux安装在ubuntu 20.04.6上。因为使用的主机是windows系统,所以选择安装virtualbox后再安装的ubuntu 20.04.6虚拟机。你也可以通过vmware安装ubuntu。具体怎么如何在virtualbox或者vmware上安装ubuntu,请自行网上查找相关资料。

安装好ubuntu系统之后需要进行一下操作。

image-20250627164525060

解释器类型相符,若不相符则用以下命令进行修改dash为bash:

在出现的弹框中点击“NO”。

之后系统就开始安装petalinux了,直到出现 “Press Enter to display the license agreements 字样,按下回车继续,之后会出现三个许可协议,也是按 Q 退出后 按下Y 按回车继续,之后系统就开始安装Petalinux了

image-20250627170615206

出现

可以将其写入到系统环境变量中:

 

如果显示Petalinux的安装目录,表明工作环境已设置 并且可以正常运行了。

配置petalinux工程

vivado导出硬件工程信息得到.xsa文件

petalinux工程所需相关命令

image-20250708134726752

 

此处会弹出相关配置的字符图形界面,相关配置在后续讲述。

 

petalinux工程配置界面

在执行petalinux-config --get-hw-description命令弹出一个窗口里可以配置petalinux工程。如果已经配置过了,之后想再次配置,可以运行命令“petalinux- config”来配置

image-20250708140532419

通过键盘上的“↑”和“↓”键来选择要配置的菜单,按下“Enter”键进入子菜单。菜单中蓝色高亮的首字母就是此菜单的热键,在键盘上按下此高亮字母对应的键可以快速选中对应的菜单。选中子菜单以后按下“Y”键就会将相应的配置选项写入配置文件中,菜单前面变为“< * >”。按下“N”键不编译相应的代码,按下“M”键就会将相应的代码编译为模块,菜单前面变为“< M >”。按两下“Esc”键退出,也就是返回到上一级,按下“?”键查看此菜单的帮助信息,按下“/”键打开搜索框,可以在搜索框输入要搜索的内容。 在配置界面下方会有五个按钮,这五个按钮的功能如下:

从上到下的简单地介绍下这些菜单:

uboot和Linux内核

在选项Linux Components Selection 中可以配置uboot和Linux内核的来源,按回车键可进入下一个选择界面。uboot和Linux内核默认是github上下载的,需要Linux主机连接互联网才能下载。本实验将对应的资源都下载到了本地。下载链接:linux-xlnxuboot-xlnx

注意:①一定要使用和petalinux对应版本,我们使用的是petalinux2021.1版本;②如果多个petalinux工程都需要使用本地源码,那么每一个 petalinux 工程都需要单独对应内核源码和 u-boot 源码, 否则其中一个 petalinux 工程修改了源码, 就会影响到其他的工程。

image-20250811134401230

 

image-20250708154325387

将内核源码复制到虚拟机内解压。在这里我们选择解压到/home/mind/petalinux_downloads下(需要先创建petalinux_downloads文件夹)。

image-20250708141924947

将linux内核/uboot的来源改为本地获取,并配置对应下载的离线包解压后的地址:

选择Linnux Compoents Selection-->u-boot-->ext-local-src

Linnux Compoents Selection-->linux-kernel-->ext-local-src

选择完成后会出现多两行选项:External u-boot local source settings--->

External u-boot local source settings--->

选中这两项,填入对应地址保存并退出。

image-20250708142114624

image-20250708142020912

image-20250708142041644

image-20250708142150144

设置离线编译

Petalinux 编译工程默认需要联网下载一些资源,如果网络不佳会编译非常缓慢甚至编译失败。为了解决这个问题,我们可以预先下载两个离线资源包,然后设置 petalinux离线编译。此时,u-boot和linux的资源包已从github下载,还需要下载downloadsssate

注意,一定要下载 petalinux版本对应的文件,我们使用的 petalinux 版本是 2021.1,就需要找到 2021.1标签中的这两个文件下载。

image-20250811134812601

 

选择Petalinux工具arm- sstate-cache:

image-20250811135409751

image-20250811135440321

将下载的压缩包拷贝到虚拟机中并解压,这里选择解压到/home/mind/petalinux-downloads:

image-20250708141924947

选择最下面的“Yocto Settings —>选项:

image-20250708142626192

 

在“Yocto Settings —>” 界面中,取消选择“Enable Network sstate feeds”,选择“Enable BB NO NETWORK”,因为我们已经把所需要的包下载到了本地,所以在编译时不需要进行联网,可以缩短编译时间。

注:即便设置了离线编译,但在构建工程时也需要保证ubuntu系统可以连接网络,petalinux需要从github上下载一些源代码。

image-20250708143753844

设置“sstate_aarch64”包的路径,选择此页面下的“Local sstate feeds settings —>”选项,配置相应的解压文件所在路径

image-20250708160707544

image-20250708143851198

设置“downloads”包的路径,先选择< Exit >选项返回到下图的界面,然后选择“Add pre-mirror url —>”选项:此路径前一定要加file:///

image-20250708144003442

image-20250708144036650

改变文件系统类型

在初始页面选择Image Packaging Configuration----->

 

image-20250708161228286

第一个选项便是根文件系统的类型的配置,默认为 INITRD,一般默认即可。如果我们需要运行Ubuntu 或 Debian 的根文件系统时,就需要配置成 EXT4(SD/eMMC/ SATA/USB),NFS 挂载启动需要配置成 NFS。此处设置成EXT4。

注:INITRD 类型的根文件系统每次重新启动 linux 系统都是全新的、未改动过的,也就是说启动系统后进行的所有修改掉电后就全部丢失了,再次重新启动还是之前未修改过的根文件系统,选择“EXT4”可以将根文件系统放在 SD 卡、eMMC 的 ext4 分区,这样启动系统后进行的所有修改掉电后就不会丢失了。

“Copy final images to tftpboot”选项:当在 Ubuntu 的根文件下创建一个名为 tftpboot 的文件夹时,工程生成镜像后会自动将相关文件复制到/tftpboot 目录中。

image-20250708161334786

 

最后点击Save,Exit。

烧写镜像至TF卡

在配置完petalinux工程后,并执行以下命令,即可生成内核镜像和文件系统:

至此在image/linux文件夹下生成了:BOOT.bin、boot.scr、image.ub、rootfs.tar.gz。下面需要将内核镜像以及文件系统保存到TF卡上。

插入TF卡,此时可以在虚拟机右下角位置查看并选择tf卡的连接位置:

image-20250708171452626

输入“p”,会看到当前分区情况。

输入"d",将一个分区删除,如果有多个分区,则需要输入多次d。

再输入“p”,会看到当前分区情况。如果当前分区不是dos分区的话,则输入“o”,改为dos

输入“n”,将创建一个分区。输入“p”,然后依次输入“1”、“2048”、“+200M”。

输入“t”,设置分区类型,输入“c”,将类型设置为“W95 FAT32 LBA”。

输入“a”,将分区设置为引导分区。

使用“n”命令,将剩余空间都留给第二个分区,直接回车就可以了。

输入“p”,检查一下是不是两个分区;都没问题则输入“w”,将分区表写入tf卡。

image-20250708145305669

image-20250715154826897

创建和使用BSP包

使用petalinux的bsp包,我们可以方便快速的提供我们验证好的petalinux工程给他人使用,或者是使用他人验证好的petalinux工程。只需要掌握创建和使用bsp包的两条命令即可。

使用下面的命令即可创建petalinux工程的bsp包到当前打开终端的路径中:

使用下面的命令即可用bsp包来创建petalinux工程到当前打开终端的路径中:

注:如果制作bsp包的工程可以编译成功,那使用bsp包制作的工程也可以直接编译.