以Xilinx ZCU106为例从0开始搭建Petalinux工程


前言

本文以Xilinx ZCU106为例,从0开始搭建一个petalinux项目工程,目标是编译出来的镜像,最终烧写进开发板后的效果与烧写官方提供的镜像效果一致。


一、Petalinux是什么?

PetaLinux 是Xilinx公司推出的嵌入式Linux开发套件,直接构建在 Yocto 项目顶层的定制工具,用于实现与赛灵思平台的集成。
说人话就是可以利用petalinux建立一个工程文件,工程里可以配置生成u-boot、kernel、rootfs等镜像文件,再烧写到赛灵思平台,不用再到处找源码去配置移植,里面的工具都会帮你配好,只要配置好相关文件,其它的它都会帮你自动生成。

二、使用步骤

1.安装petalinux

这一步网上已经有很多教程,就不多废话了,就一点:要注意自己下载安装的版本,后面和Xilinx开发的版本尽量保持一致,否则容易出现些奇奇怪怪的问题,我这里选择安装的是petalinux 2022.2版本,ubuntu 18.04.2版本,VMware Workstation Pro 17版本,下载petalinux前需要注册一个AMD账号,不麻烦,后面很多资源都需要在官网上下载。
Xilinx官网下载链接: https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/embedded-design-tools/archive.html

在这里插入图片描述

安装完成后,在每次打开新终端时都要运行一遍命令配置环境,不然后面的步骤会有影响。
在这里插入图片描述

2.设计目标

官方提供的TRD(目标参考设计)目录如下:

rdf0428-zcu106-vcu-trd-2022-2
├── apu
│   └── vcu_petalinux_bsp
├── images
│   ├── vcu_audio
│   ├── vcu_llp2_hdmi_nv12
│   ├── vcu_llp2_hlg_sdi
│   ├── vcu_llp2_plddr_hdmi
│   ├── vcu_multistream_nv12
│   ├── vcu_plddrv1_hdr10_hdmi
│   ├── vcu_plddrv2_hdr10_hdmi
│   └── vcu_yuv444
├── pl
│   ├── constrs
│   ├── designs
│   ├── prebuild
│   ├── README.md
│   └── srcs
├── README.txt
└── zcu106_vcu_trd_sources_and_licenses.tar.gz

这里我们以Xilinx的
Zynq UltraScale+ MPSoC VCU TRD 2022.2 - Xilinx Low Latency PS DDR NV12 HDMI Audio Video Capture and Display版本为例,对应镜像文件在rdf0428-zcu106-vcu-trd-2022-2/images/vcu_llp2_hdmi_nv12中。
具体镜像对应的功能在官方Wiki中都有说明,附上链接:
Xilinx Wiki: https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/444006775/Zynq+UltraScale+MPSoC)
针对本次例子的说明如下:
在这里插入图片描述
在这里插入图片描述

3.建立工程

在开始前要准备好bsp文件和xsa文件,这两个文件在官方提供的TRD包中都能找到,bsp路径在rdf0428-zcu106-vcu-trd-2022-2\rdf0428-zcu106-vcu-trd-2022-2\apu\vcu_petalinux_bsp,xsa路径在rdf0428-zcu106-vcu-trd-2022-2\rdf0428-zcu106-vcu-trd-2022-2\pl\prebuild\zcu106_llp2_audio_nv12,准备好之后就可以正式开始搭建我们的工程了。

1.准备环境

在创建工程前,需要在petalinux安装路径下找到环境脚本执行,并把sh命令解释器修改为bash。

cd /opt/pkg/petalinux/2022.2/
source settings.sh
//验证方法:
echo $PETALINUX
ls -lh /bin/sh

在这里插入图片描述

2.创建petalinux工程

petalinux-create -t project -s ../hardware/zcu106_wiki_demo/xilinx-vcu-zcu106-v2022.2-final.bsp -n zcu106demo

-t --type的缩写,表示建立的类型为project。
-s 表示使用bsp文件来创建工程,也可以使用–template,表示用平台模版创建工程。
-n 表示建立的工程名
完成后当前目录下就有了名为zcu106demo的项目工程了。
在这里插入图片描述

3.配置petalinux工程

进入工程中,将准备好的xsa文件导入工程,这一步要稍等片刻,最后的路径只要包含到xsa目录就好。

cd zcu106demo/
petalinux-config --silentconfig --get-hw-description=../../hardware/zcu106_wiki_demo/xsa

在这里插入图片描述

4.配置设备树文件

这一步需要把官方提供的设备树文件配置到工程中,否则后面编译的时候会出现kernel编译错误,提示设备树缺少节点的情况。注意:如果第一步没有用官方bsp包建立工程,下面目录下是不会生成官方dtsi文件的。一般来说,没有特别需求的话,u-boot,kernel,rootfs的配置保持默认就好。

cd project-spec/meta-user/recipes-bsp/device-tree/files/
ln -sf vcu_llp2_psddr_hdmi.dtsi system-user.dtsi

在这里插入图片描述
接下来返回到工程目录页,修改编译配置,这里我是下载了官方的离线编译包,这样速度会快点,虽然离线包很大,但是以后编译会方便很多,不然像默认联网编的话耗费时间是很多的,没有下载离线包的友友可以跳过这一步。下载链接在第一步。
在这里插入图片描述

cd -
petalinux-config
/*
	选择如下:
	Yocto setting配置离线包
		--->Local sstate feeds settings 
			--->aarch64解压目录
		--->Add pre-mirror url   
			--->file://Downloads解压目录
		[ ] Enable Network sstate feeds
		[ ] Enable BB NO NETWORK	有些包在离线包中没有的,只能联网下载,所以不能使能
*/	

5.编译petalinux工程

这一步时间比较久,可以去喝个水。

petalinux-build

6.打包、制作启动文件

上一步成功编译没有报错的话,离成功也就不远了,这一步的目的是把编译好的固件打包成指定镜像格式,方便烧写,分别是BOOT.BIN,system.dtb,Image, rootfs.cpio.gz,u-boot,boot.scr 这5个文件。

cd images/linux
petalinux-package --boot --fsbl zynqmp_fsbl.elf --u-boot u-boot.elf --pmufw pmufw.elf --fpga system.bit --force
cp BOOT.BIN system.dtb Image rootfs.cpio.gz.u-boot boot.scr <Path to Design images>

在这里插入图片描述
这一步可以设置打包什么文件进BOOT.BIN中,方便了解镜像结构,以及后期可以分开不同文件去单独开发烧录(主要是system.bit和system.dtb),提高效率。
在这里插入图片描述
至此,我们的petalinux工程就已经编译好了,接下来要做的就是把上述的5个镜像文件拷贝到SD卡,在开发板上启动,效果就和烧写官方镜像是一样的了。SD卡启动文件如下:
在这里插入图片描述


总结

以上就是今天要讲的内容,本文介绍了petalinux的使用,从0开始搭建了一个项目工程,生成了和官方效果一样的镜像文件,制作不易,多多包涵。

  • 26
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值