开发环境
- ubuntu16.04
- petalinux 2018.2(ubuntu16.04)
- vivado 2018.2(windows11)
- ZYNQ型号:ZYNQ 7020
制作步骤
准备vivado工程
使用vivado建立一个PL端工程,需要在设计中添加arm核心、QSPI Flash、DDR、uart(作为Debug口),这部分交由FPGA同事完成。
vivado工程完成后,生成bitstream文件并导出硬件文件,后续制作镜像要基于vivado工程目录下的.sdk文件夹。

创建petalinux项目
将vivado工程下的.sdk文件夹拷贝到ubuntu 16.04工作目录中,在该文件夹同级目录中执行如下命令,创建petalinux项目。
petalinux-create --type project --template zynq --name test_linux
其中--name项后即为创建petalinux项目的名称。
配置petalinux项目
进入到petalinux项目文件夹,开始对该项目进行配置。
cd test_linux
petalinux-config --get-hw-description ../*.sdk #从刚才拷贝的sdk文件夹中解析硬件描述信息
petalinux配置
执行完前述命令后,会产生如下界面。

一般而言,需要更改以下几个地方:
设置u-boot和kernel源代码为本地(可选)
- Linux Components Selection ---> u-boot(u-boot-plnx)---> u-boot-plnx更改为ext-local-src,即使用本地的u-boot源代码,不从网络上下载,更改后返回上一级,会要求设置External u-boot local source settings,在该项中填入本地u-boot源码根目录后,save即可。
- Linux Components Selection ---> linux-kernel (linux-xlnx) ---> linux-xlnx更改为ext-local-src,即使用本地kernel源代码,不从网络上下载,更改后返回上一级,设置External linux-kernel local source settings为本地kernel源码根目录,save即可。
u-boot和kernel的源码可以在xilinx的github仓库下载,链接为:
u-boot:https://github.com/Xilinx/u-boot-xlnx
linux-kernel:https://github.com/Xilinx/linux-xlnx
本例中使用的均为2018.2的版本。
设置boot image和kernel存储位置
- Subsystem AUTO Hardware Settings ---> Advanced bootable images storage Settings ---> boot image settings ---> image storage media ---> ,选择primary flash。如果是从SD卡启动,就选择primary sd。
- u-boot env partition settings、kernel image settings、jffs2 rootfs image settings依次设置好是primary sd还是primary flash。本例从QSPI Flash启动,因此全部要设置为primary flash。
设置flash分区
- Subsystem AUTO Hardware Settings ---> Flash Settings,可以设置boot、bootenv、kernel分区的大小,boot分区存放zynq_fsbl.elf、bit文件、u-boot,bootenv存放boot环境信息,kernel存放内核。可以根据需要更改对应大小。如无特别需要,保持默认即可。
开机自动登陆,取消输入用户名、密码(可选)
- Yocto Settings ---> Enable Debug Tweaks,改成选中模式。
上述配置全部完成后,Save退出,等待petalinux配置完成,如下图所示。

配置u-boot(可选)
如果需要单独配置u-boot,例如增加驱动,可以使用下述命令:
petalinux-config -c u-boot
配置内核(可选)
如果需要单独配置kernel,使用下述命令:
petalinux-config -c kernel
配置文件系统(可选)
如果需要单独配置rootfs,使用下述命令:
petalinux-config -c rootfs
修改设备树(可选)
如果需要在设备树中添加节点,修改下述文件:
petalinux工程目录/project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi
编译打包镜像
上述配置和修改全部完成后,使用build命令进行镜像编译。
petalinux-build
如果需要单独编译某一部分,可以使用如下命令:
petalinux-build -c u-boot #单独编译u-boot
petalinux-build -c kernel #单独编译kernel
编译成功后,进行镜像打包:
petalinux-package --boot --fsbl ./images/linux/zynq_fsbl.elf --fpga --u-boot --kernel
如果无须kernel,可以去掉命令结尾的--kernel。最终生成的镜像文件BOOT.bin放置在images/linux目录下。
烧写镜像
使用vivado SDK工具,创建一个fsbl应用,将BOOT.bin固化到QSPI Flash。启动模式修改为从QSPI启动,重新上电即可。
本文地址: 使用petalinux工具制作ZYNQ linux系统启动镜像