
完整Petalinux工程实践目录前言一、ZYNQ启动流程二、Petalinux常用命令介绍三、搭建Petalinux工程3.1 Vivado 创建硬件平台3.2 创建 petalinux 工程3.2.1 设置 Petalinux 运行环境3.2.2 创建 petalinux 工程3.2.3 petalinux 工程中导入xsa 文件并配置3.2.4 配置 Linux 内核3.2.5 配置 Linux 根文件系统3.2.6 配置设备树文件3.2.7 编译Petalinux工程3.2.8 打包BOOT.BIN四、制作 SD 启动卡五、进入 Linux 系统总结前言本文介绍了一整套Petalinux工程搭建的流程本文使用的Vivado环境为2020.2Ubuntu环境为18.04Petalinux环境为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 0BootROMBoot是引导ROM是只读内存也就是BootROM中有一段只读的引导代码代码用于SD卡等外设初始化读取引脚配置最后加载镜像到OCMOCM是片上内存这里主要是起一个引导加载的作用引导加载程序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选择对应的芯片型号。点击FinishVivado开始创建工程。这里先搭建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 UltraScaleMPSoC 系列的芯片就需要变为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.dtsi3.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工程。