开发环境

  • 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启动,重新上电即可。

说点什么
请文明发言!
支持Markdown语法
好耶,沙发还空着ヾ(≧▽≦*)o
Loading...