Petalinux工程设计流程
完整Petalinux工程实践!
目录
3.2.3 petalinux 工程中导入xsa 文件并配置
前言
本文介绍了一整套Petalinux工程搭建的流程,本文使用的Vivado环境为2020.2;Ubuntu环境为18.04;Petalinux环境为2020.2;搭建工程以zynq-7000系列的XC7Z020芯片为例。这里搭建一个ZYNQ嵌入式最小系统,从硬件配置到Petalinux系统工程的搭建。从理论到实战,逐步分析,层层递进!
一、ZYNQ启动流程
在使用Petalinux创建工程前先了解一下ZYNQ启动流程,ZYNQ启动有三个阶段:
- Stage 0 (BootROM: BootROM Header)
- Stage 1 (FSBL / User code)
- Stage 2 (U-Boot / System / Application)
以下为官方文档的介绍:


为了方便理解,这里借用正点原子的流程图来分析:

Stage 0 :BootROM:Boot是引导;ROM是只读内存,也就是BootROM中有一段只读的引导代码,代码用于SD卡等外设初始化;读取引脚配置;最后加载镜像到OCM,OCM是片上内存,这里主要是起一个引导加载的作用,引导加载程序(FSBL)引导代码到OCM中。引导加载过后Stage 0结束,开始Stage 1阶段。这里注意,在Stage 0阶段不对PL进行任何操作。
Stage 1 :控制权到FSBL时,主要先进行PS的初始化;再加载PL配置文件,也就是bit文件;然后加载SSBL或裸机程序,这里需要看实际情况是跑操作系统还是跑裸机程序。
- 跑操作系统加载SSBL,加载过后会跳转执行SSBL,进入Stage 2阶段,这时控制权就转交SSBL。
- 跑裸机程序加载裸机程序后就会只执行裸机程序,不会进入Stage 2阶段。
Stage 2 :通过SSBL加载操作系统到DDR,其中U-Boot是通用引导加载程序,U-Boot来负责加载Linux操作系统。
二、Petalinux常用命令介绍
先来介绍下Petalinux工程设计的命令,PetaLinux 工具遵循顺序化的处理流程,以下是官方文档的内容:

这里按表格的顺序,也是Petalinux中创建工程的顺序:

本文举例介绍的Petalinux设计流程如下:
1. 通过 Vivado 创建硬件平台,得到 xsa 文件;
2. 运行 source 安装路径>/settings.sh,设置 Petalinux 运行环境
3. 通过 petalinux-create -t project 创建 petalinux 工程;
4. 使用 petalinux-config --get-hw-description,将 xsa 文件导入到 petalinux 工程当中并配置 petalinux 工程;
5. 使用 petalinux-config -c kernel 配置 Linux 内核;
6. 使用 petalinux-config -c rootfs 配置 Linux 根文件系统;
7. 配置设备树文件;
8. 使用 petalinux-build 编译整个工程;
9. 使用 petalinux-package --boot 制作 BOOT.BIN 启动文件;
10. 制作 SD 启动卡,将 BOOT.BIN 和 image.ub 以及根文件系统部署到 SD 卡中;
11. 将 SD 卡插入开发板,并将开发板启动模式设置为从 SD 卡启动;
12. 开发板连接串口线并上电启动,串口上位机打印启动信息,登录进入 Linux 系统。
三、搭建Petalinux工程
理论部分介绍完,下面从Vivado 开始,来完整创建一个实际的工程!
3.1 Vivado 创建硬件平台
本文使用的Vivado环境为2020.2,搭建工程以zynq-7000系列的XC7Z020芯片为例。这里搭建一个ZYNQ嵌入式最小系统,主要用来演示Petalinux系统工程的搭建。
打开Vivado,
创建一个工程

点击Next

选择好合适的位置来存放工程。

点击Next

一直点击Next

选择对应的芯片型号。

点击Finish,Vivado开始创建工程。

这里先搭建bd

在Design中点击 + 号,添加IP核:


这里对于ZYNQ最小系统的配置可以参考之前博客ZYNQ嵌入式最小系统配置:ZYNQ7000与ZYNQMP系列_zynq最小系统-CSDN博客
这里仅展示部分配置参数:






配置完成后,点击Run Block Automation

勾选好选项,点击OK

验证搭建的Block Design

验证成功

完成综合:




综合成功后导出硬件文件。


硬件文件导出成功后得到xsa

接下来就可以将xsa文件导入到Petalinux里创建系统工程了!
3.2 创建 petalinux 工程
3.2.1 设置 Petalinux 运行环境
在正式使用 petalinux 工具之前,需要先设置 petalinux 的作环境
source /opt/pkg/petalinux/2020.2/settings.sh
运行如图所示:

3.2.2 创建 petalinux 工程
创建一个名为Zynq_7020的 Petalinux 工程:
输入以下指令:
petalinux-create -t project --template zynq -n Zynq_7020
- -t 是“--type”的简写;
- template 参数表明创建的 petalinux 工程使用的平台模板;
- zynq 表明使用 的是 zynq 平台模板的 petalinux 工程,用于 zynq-7000 系列的芯片。而 Zynq UltraScale+MPSoC 系列的芯片就需要变为zynqMP 表明使用的是 zynqMP SoC 平台模板的 petalinux 工程。
- name 参数(此处简写为“-n”)后接的 是 petalinux 工程名
运行如图所示:

在指定文件路径下就创建了一个工程文件:

3.2.3 petalinux 工程中导入xsa 文件并配置
先将硬件文件导入工程文件夹中:

首次配置 Petalinux 工程是将 xsa 文件导入到 Petalinux 工程中,Petalinux 工具会解析 xsa 文件并弹出配置窗口。
输入以下指令:
petalinux-config --get-hw-description ./hardware/design_1_wrapper.xsa
运行如图所示:

弹出 petalinux 图形化配置窗口,可根据实际工程进行配置:

完成 petalinux 工程的配置后,会回到终端:

3.2.4 配置 Linux 内核
输入以下指令:
petalinux-config -c kernel
运行如图所示:

会弹出 Linux 内核的图形化配置界面:

根据实际工程配置完成后会回到终端:

3.2.5 配置 Linux 根文件系统
输入以下指令:
petalinux-config -c rootfs
运行如图所示:

会弹出根文件系统的图形化配置界面:

根据实际工程配置完成后会回到终端:

3.2.6 配置设备树文件
在工程路径下:工程名/project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi 找到system-user.dtsi 设备树文件,进行编辑,应对Vivado工程中的PS配置,可以添加相匹配的外设:
code /home/echo/Petalinux/Zynq_7020/project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi

3.2.7 编译Petalinux工程
输入以下指令:
petalinux-build
运行如图所示:

3.2.8 打包BOOT.BIN
输入以下指令:
petalinux-package --boot --fpga --u-boot --fsbl
指令中
- “petalinux-package --boot”命令生成可引导映像,该映像可直接与 Zynq 系列设备(包括 Zynq-7000 和 Zynq UltraScale + MPSoC)或基于 MicroBlaze 的 FPGA设计一起使用。
- “--fsbl”用于指定 fsbl 文件所在位置,后面接文件对应的路径信息,如果不指定文件位置,默认对应的是 images/linux/zynq_fsbl.elf;
- “--fpga”用于指定 bitstream文件所在位置,后面接该文件对应的路径信息,默认对应的是 images/linux/system.bit;
- “--u-boot”用于指定 U-Boot文件所在位置,后面接该文件所在路径信息,默认为 images/linux/u-boot.elf。
运行如图所示:

进入Petalinux 工程的 images/linux 目录下可以看到打包生成的文件:

四、制作 SD 启动卡
这里推荐一个工具,可以使用图形化的界面对SD卡进行分区,简单的方法实现和指令分区一样的效果。
在Ubuntu中安装下图所示软件:

分区配置参数:

点击√

点击Apply

分区完成后:

点击Close

打开文件夹,可以发现分区好的BOOT目录和rootfs目录:

SD卡分区完成后们将该工程 image/linux 目录下的 BOOT.BIN、boot.scr 和 image.ub 文件拷贝到BOOT分区:
输入以下指令:
cp BOOT.BIN image.ub boot.scr /media/echo/BOOT/
运行结果如图:
![]()
将该工程 image/linux 目录下的系统根文件解压到rootfs分区:
输入以下指令:
sudo tar -zxvf rootfs.tar.gz -C /media/echo/rootfs/
运行结果如图:

打开BOOT文件夹,可以看到:

打开rootfs文件夹可以看到:

五、进入 Linux 系统
板卡插入SD卡,连接好串口,打开串口工具,这里需注意将板卡的启动模式开关调整为SD卡启动。上电后串口中会有如下打印信息:

输入用户名:root
密码也是默认密码:root

就可以进入板卡的Linux系统中了。
总结
以上就是今天要讲的内容,本文介绍如何搭建一整套Petalinux工程。
更多推荐



所有评论(0)