Petalinux快速入门向导 (4) 第三章.PetaLinux开发基本流程

  1. 配置环境变量

source /opt/xilinx/p201/settings.sh

如果已经在bashrc里面添加了这行,则可以省略

2. 创建project

创建工程有几种方式

1)基于cpu模板创建基本的框架,然后在后续用petalinux-config导入vivado导出的xsa(hdf)文件

petalinux-create -t project --template <CPU-TYPE> -n <PROJECT-NAME>

其中,

  • <CPU-TYPE>为CPU类型,具体值可为:zynqMP (for UltraScale+ MPSoC)、zynq (for Zynq)、microblaze (for MicroBlaze)
  • <PROJECT-NAME>为工程名称

例如:

petalinux-create -t project --template zynqMP -n test1

2) 基于官方提供的bsp包

petalinux-create -t project -s test.bsp

3. 基于Vivado产生的硬件描述文件的创建工程

petalinux-config --get-hw-description=<PATH-TO-HDF/XSA-DIRECTORY>

其中,<PATH-TO-HDF/XSA-DIRECTORY>为Vivado硬件描述文件所在目录路径;老版本的硬件描述文件的后缀名为hdf,新版本的后缀名为xsa,其他是相同的。

注意:这里是指xsa文件所在的目录,不是文件名

假设test1.xsa在当前目录,则

cd test1

petalinux-config --get-hw-description=../

4.设置缓存目录

在project-spec/meta-user/conf/petalinuxbsp.conf文件中

gedit project-spec/meta-user/conf/petalinuxbsp.conf

增加以下几行

DL_DIR = "/opt/xilinx/p201/downloads"

SSTATE_DIR = "/opt/xilinx/p201/sstate/aarch64"

RM_WORK_EXCLUDE += "linux-xlnx"

RM_WORK_EXCLUDE += "u-boot-xlnx"

5. 配置u-boot

petalinux-config -c u-boot

(源码会自动下载到components/plnx_workspace/sources/u-boot-xlnx)

根据需求进行修改,然后按ESC保存退出

6. 配置kernel

petalinux-config -c kernel

(源码会自动下载到components/plnx_workspace/sources/linux-xlnx)

根据需求进行修改,然后按ESC保存退出

7. 配置rootfs

petalinux-config -c rootfs

 

根据需求进行修改,然后按ESC保存退出

8. 编译PetaLinux

petalinux-buid

(可以用time petalinux-build,这样执行完会显示编译总共花了多少时间)

最后生成的二进制文件位于images/linux目录下

-rw-r--r-- 1 av av  16493056 Nov 10 10:02 Image

-rw-r--r-- 1 av av     51120 Nov 10 08:57 bl31.bin

-rw-r--r-- 1 av av    154752 Nov 10 08:57 bl31.elf

-rw-r--r-- 1 av av      2007 Nov 10 08:44 boot.scr

-rw-r--r-- 1 av av 106810856 Nov 10 10:02 image.ub

-rw-r--r-- 1 av av    132716 Nov 10 08:46 pmufw.elf

drwxr-xr-x 2 av av      4096 Nov 10 08:44 pxelinux.cfg/

-rw-r--r-- 1 av av 267110400 Nov 10 10:02 rootfs.cpio

-rw-r--r-- 1 av av  98912037 Nov 10 10:02 rootfs.cpio.gz

-rw-r--r-- 1 av av  98912101 Nov 10 10:02 rootfs.cpio.gz.u-boot

-rw-r--r-- 1 av av 126353408 Nov 10 10:02 rootfs.jffs2

-rw-r--r-- 1 av av     35517 Nov 10 10:02 rootfs.manifest

-rw-r--r-- 1 av av  99264053 Nov 10 10:02 rootfs.tar.gz

-rw-r--r-- 1 av av   7797808 Nov 10 08:38 system.bit

-rw-r--r-- 1 av av     46238 Nov 10 10:01 system.dtb

-rw-r--r-- 1 av av    911294 Nov 10 10:01 u-boot.bin

-rw-r--r-- 1 av av    977408 Nov 10 10:01 u-boot.elf

-rw-r--r-- 1 av av 287638080 Nov 10 10:02 vmlinux

-rw-r--r-- 1 av av     67419 Nov 10 08:44 zynqmp-qemu-arm.dtb

-rw-r--r-- 1 av av     76919 Nov 10 08:44 zynqmp-qemu-multiarch-arm.dtb

-rw-r--r-- 1 av av     10215 Nov 10 08:44 zynqmp-qemu-multiarch-pmu.dtb

-rw-r--r-- 1 av av    123672 Nov 10 08:47 zynqmp_fsbl.elf

9.打包生成boot.bin

cd images/linux

9.1 不带bit

petalinux-package --boot --fsbl zynqmp_fsbl.elf --u-boot u-boot.elf --pmufw pmufw.elf --force

9.2 包含bit

petalinux-package --boot --fsbl zynqmp_fsbl.elf --u-boot u-boot.elf --pmufw pmufw.elf --fpga system.bit --force

cd images/linux;petalinux-package --boot --fsbl zynqmp_fsbl.elf --u-boot u-boot.elf --pmufw pmufw.elf --fpga system.bit --force;cp image.ub /tftpboot/;cd ../..

10. 其他常用命令

清理目录,删除tmp和sstate cache

petalinux-build -x distclean

清理目录,删除tmp、<PROJECT>/images/,  <PROJECT>/build/、<PROJECT>/components/plnx_workspace

petalinux-build -x mrproper

编译sdk

petalinux-build --sdk

把工程目录打包成bsp

petalinux-package --bsp -p xilinx-zcu106-2020.2 --output leo-xilinx-zcu106-2020.2.bsp