petalinux设计流程

4 篇文章 0 订阅

petalinux设计流程简介

from ug1144 ug1157
一般而言, PetaLinux 工具遵从顺序工作流程模型。下表提供了一个示例设计工作流程, 展示了任务应完成的顺序以及该任务的相应工具或工作流程。

设计流程步骤

设计流程步骤工具/工作流程
硬件平台创建(仅用于定制硬件)Vivado® 设计工具
创建 PetaLinux 工程petalinux-create -t project
初始化 PetaLinux 工程(仅用于定制硬件)petalinux-config --get-hw-description
设置系统级选项petalinux-config
创建用户组件petalinux-create -t COMPONENT
设置 Linux 内核petalinux-config -c kernel
配置根文件系统petalinux-config -c rootfs
构建系统petalinux-build
部署系统的封装petalinux-package
启动系统进行测试petalinux-boot
Test the system on qemupetalinux-boot --qemu
Update the PetaLinux tool system software componentspetalinux-upgrade --url/–file

1. 创建新工程 petalinux-create

petalinux-create --type project --template <-PLATFORM> --name <PROJECT_NAME>

–template
○ zynqMP (for Zynq UltraScale+ MPSoC) // petalinux-create --type project --template zynqMP --name <PROJECT_NAME>
○ zynq (for Zynq-7000 devices)
○ microblaze (for MicroBlaze™ processor)

通过BSP创建
petalinux-create -t project -s xxx.bsp -n new_prj_name

Option功能Value RangeDefault Value
-t,–type TYPE指定要创建的对象类型.必需的.• project •apps •modulesNone
-n,–name NAME创建具有指定名称的对象。当从BSP源创建项目时,这是可选的。否则,这是必需的。用户指定当从BSP源创建项目时,该项目使用源BSP的名称
-p,–project PROJECTPetaLinux项目目录路径,用于在项目中创建组件。这是可选的。用户指定当前目录
–force覆盖现有的文件。可选的NoneNone
-h,–help显示使用信息。可选的NoneNone

petalinux-create -t project

Create a new project from a reference BSP file
$ petalinux-create -t project -s
• Create a new project based on the MicroBlaze™ processor template
$ petalinux-create -t project -n --template microblaze

petalinux-create -t COMPONENT

使用petalinux-create -t COMPONENT命令可以在指定的PetaLinux项目中创建各种组件。 然后,可以使用petalinux-config -c rootfs工作流切换这些组件,使其有选择地包含在最终系统中或从最终系统中排除。

创建在rootfs中启用的应用程序组件。
$ petalinux-create -t apps -n --template --enable

创建一个新的仅安装应用程序组件。 在此流程中,未编译任何内容
$ petalinux-create -t apps -n --template install

创建一个新模块并启用
petalinux-create -t modules -n --template --enable

2. 内核配置petalinux-config

petalinux-config --get-hw-description命令允许使用指定的Vivado Design Suite硬件项目中的特定于硬件的信息来初始化或更新PetaLinux项目。 受此过程影响的组件可以包括FSBL配置,U-Boot选项,Linux内核选项和Linux设备树配置。 应谨慎使用此工作流程,以防止对PetaLinux项目的硬件配置进行意外和/或意外更改。 此工作流程使用的路径是包含HDF / XSA文件的目录,而不是HDF / XSA文件本身的完整路径。
$ cd <plnx-proj-root>
$ petalinux-config --get-hw-description=<PATH-TO-HDF/XSA DIRECTORY 文件夹目录,而非文件>

设置根文件系统启动方式:
Image Packaging Configurations -> Root filesystem type -> SD card
在这里插入图片描述

petalinux-config -c COMPONENT命令允许您使用标准的menuconfig接口来控制嵌入式Linux系统的构建方式,还可以生成嵌入式软件应用程序的源代码。 当petalinux-config在没有其他选项的情况下执行时,它将启动系统级或“通用”菜单配置。
petalinux-config -c kernel:自定义Linux内核
petalinux-config -c u-boot:自定义U-Boot
petalinux-config -c rootfs:自定义root 文件系统
The --oldconfig/–silentconfig option allows you to restore a prior configuration.

注释:
在DTG 设置中可以指定ps端OS是哟个的内存大小
earlycon clk_ignore_unused earlyprintk root=/dev/mmcblk0p2 rw rootwait mem=1024M

也可以在系统启动过程中,启动rootfs前通过输入命令指定:
setenv bootargs =‘earlycon clk_ignore_unused earlyprintk root=/dev/mmcblk0p2 rw rootwait mem=1024M’

3. 构建系统镜像:petalinux-build

petalinux-build
该步骤生成设备树 DTB 文件、 FSBL第一阶段引导加载程序(如果选定的话)、 U-Boot、 Linux 内核以及根文件系统镜像。 最后, 它生成必需的启动镜像。
在构建完成时,生成的镜像将位于 / images 和 /tftpboot 目录之内。

运行 petalinux-build 时, 它为平台生成 FIT 镜像。还会生成 RAM 磁盘镜像 rootfs.cpio.gz.u-boot

最终镜像 <-plnx-proj-root>/images/
linux/image.ub, 是一种 FIT 镜像。内核镜像(包括 RootFS)是 Zynq® UltraScale+™ MPSoC 的“Image” 、
Zynq-7000 器件的“zImage”以及 MicroBlaze 处理器的“image.elf” 。

仅构建 FSBL:
$ petalinux-build -c fsbl (for MicroBlaze, it is fs-boot)

4. 生成启动镜像:petalinux-package

命令

petalinux-package --boot|–bsp|–prebuilt|–sysroot [options]
例子:
% cd images/linux
% petalinux-package --boot --format BIN --fsbl zynqmp_fsbl.elf --u-boot u-boot.elf --pmufw pmufw.elf --fpga system.bit --atf bl31.elf --force

PetaLinux -package工具将PetaLinux项目打包成适合部署的格式。该工具提供了几个工作流,它们的操作取决于目标包格式。支持的格式/工作流是 boot, bsp, and pre-built。petalinux-package工具使用包类型名执行,以petalinux-package --PACKAGETYPE格式指定特定的工作流。

PACKAGETYPE:
boot包类型: 创建允许引导目标设备的文件(.BIN或.MCS)
bsp包类型:创建一个.bsp文件,其中包含目标PetaLinux项目的全部内容。此选项允许您导出和重用bsp
pre-build :在目标PetaLinux项目中创建一个名为“pre-build”的新目录,并包含对直接在物理板上引导有用的预构建内容。这个包类型通常用作创建bsp包类型的前身。
image
sysroot:包类型为Vitis™软件平台安装sysroot。它可以指定安装程序路径和安装目录路径。

例子

启动镜像可放入闪存或 SD 卡。在您打开电路板的电源时, 它可从启动镜像中启动。 启动镜像通常含有第一阶段引导加载程序、 FPGA 比特流(可选)、 PMU 固件、 ATF 和 U-Boot。执行下列命令,生成 .BIN 格式的启动镜像。
petalinux-package --boot --format BIN --fsbl images/linux/zynqmp_fsbl.elf --u-boot images/linux/u-boot.elf --pmufw images/linux/pmufw.elf --fpga images/linux/*.bit
–force

4.1 boot

生成启动镜像 (Boot Image) for Zynq UltraScale+MPSoC:启动镜像通常含有第一阶段引导加载程序、 FPGA 比特流(可选)、 PMU 固件、 ATF 和 U-Boot.
生成.bin格式的启动镜像。
$ petalinux-package --boot --format BIN
–fsbl images/linux/zynqmp_fsbl.elf
–u-boot images/linux/u-boot.elf
–pmufw images/linux/pmufw.elf
–fpga images/linux/*.bit
–force

petalinux-package --boot
petalinux-package --boot:是一条命令,生成BOOT.bin的引导文件,详情见UG1157
生成一个可引导的映像。Zynq系列设备的可引导格式为BOOT.BIN,可以从SD卡引导。 对于基于MicroBlaze的设计,默认格式为MCS PROM文件,适用于使用Vivado Design Suite编程或其他PROM编程器。
对于Zynq系列中的设备,这个工作流是Vitis软件平台提供的bootgen实用程序的包装器。对于基于microblaze的FPGA设计,该工作流是对应Vivado Tcl命令的包装器,并生成MCS格式的编程文件。这个MCS文件可以直接编程到目标板,然后启动。

Create a boot image (BOOT.BIN) including FSBL, ATF, bitstream, and u-boot.
cd images/linux
1,petalinux-package --boot --format BIN --fsbl zynqmp_fsbl.elf --u-boot u-boot.elf --pmufw pmufw.elf --fpga system.bit --atf bl31.elf --force
2,petalinux-package --boot --format BIN --fsbl zynqmp_fsbl.elf --u-boot u-boot.elf --pmufw pmufw.elf --fpga system.bit --atf bl31.elf --dtb system.dtb --force
3,petalinux-package --boot --fsbl zynqmp_fsbl.elf --u-boot u-boot.elf --pmufw pmufw.elf --fpga system.bit

例子:

  1. 为Zynq设备创建一个BOOT.BIN文件(包括Zynq-7000和Zynq UltraScale+ MPSoC)。
    petalinux-package --boot --format BIN --fsbl --u-boot -o

  2. 为Zynq设备创建一个BOOT.BIN文件,其中包括PL比特流和FITimage
    petalinux-package --boot --format BIN --fsbl --u-boot --fpga --kernel -o

  3. 为Zynq UltraScale+ MPSoC创建一个BOOT.BIN文件,其中包含PMU固件
    petalinux-package --boot --u-boot --kernel --pmufw <PATH_TO_PMUFW>

4.2 prebuilt

使用 petalinux-package --prebuilt 封装预构建镜像

5 拷贝镜像文件

本节介绍了如何向 SD 卡分区拷贝图像文件。假设有两个分区被安装到 /media/BOOT 和 /media/rootfs。

更改至您的 PetaLinux 工程根目录中。
$ cd <-plnx-proj-root>
将 引导脚本boot.scr(v2020版本后需要)、BOOT.BIN 和 image.ub 拷贝至 SD 卡的 BOOT 分区。 image.ub 文件将具有设备树和内核镜像文件。
$ cp images/linux/BOOT.BIN /media/BOOT/
$ cp images/linux/image.ub /media/BOOT/
将 rootfs.tar.gz 文件拷贝至 SD 卡的 RootFS 分区并提取文件系统。
$ sudo tar -xzvf rootfs.tar.gz -C /media/rootfs

petalinux-boot

PetaLinux-boot命令通过JTAG/QEMU通过PetaLinux映像引导MicroBlaze CPU、Zynq设备和Zynq UltraScale+ MPSoC

• In petalinux-boot --jtag workflow, images are downloaded and booted on a physical
board using a JTAG cable connection.
• In petalinux-boot --qemu workflow, images are loaded and booted using the QEMU
software emulator.
petalinux-boot --jtag
PetaLinux-boot --jtag命令使用jtag连接引导PetaLinux映像启动MicroBlaze cpu、Zynq UltraScale+ MPSoCs或Zynq-7000设备
PetaLinux -boot–qemu
PetaLinux -boot–qemu命令使用qemu仿真器引导PetaLinux映像启动MicroBlaze CPU、Zynq UltraScale+ MPSoC或Zynq-7000设备。许多QEMU选项需要超级用户(根)访问才能正确操作。root选项启用root模式并提示您输入sudo凭据

SD boot

petalinux-create
petalinux-config
下面的步骤将验证PetaLinux是否配置为为SD引导创建Linux和引导映像

Subsystem AUTO Hardware Settings

  1. Select Subsystem AUTO Hardware Settings.
  2. Select Advanced Bootable Images Storage Settings.
    a. Select boot image settings.
    b. Select Image Storage Media.
    c. Select primary sd as the boot device.
  3. Under the Advanced Bootable Images Storage Settings submenu, do the following:
    a. Select kernel image settings.
    b. Select Image Storage Media.
    c. Select primary sd as the storage device.
  4. Under Subsystem AUTO Hardware Settings, select Memory Settings and set the
    System Memory Size to 0x6FFFFFFF

自定义工程

RootFS Type 配置

  1. 启动顶层系统配置菜单。
    $ petalinux-config
  2. 选择“Image Packaging Configuration → Root File System Type” 。
  3. 按要求选择 “INITRAMFS” /“INITRD” /“JFFS2” /“NFS” /“SD card” 。
    注释: SD 启动功能预期将 RootFS 加载到 ext4 分区, 所有其他启动镜像加载到 FAT32 分区

设置 INITRAMFS 启动

  1. 将 RootFS 类型设置为 INITRAMFS
  2. 构建系统镜像。
  3. 利用以下方法之一启动系统镜像。
    a. 在 QEMU 上启动 PetaLinux 镜像,请参见 启动 QEMU 上的 PetaLinux 镜像。
    b. 利用 SD 卡在硬件上启动 PetaLinux 镜像,请参见 利用 SD 卡在硬件上启动 PetaLinux 镜像。
    c. 利用 JTAG 在硬件上启动 PetaLinux 镜像,请参见 利用 JTAG 在硬件上启动 PetaLinux 镜像。
    重要提示! PetaLinux 的默认 RootFS 是 INITRAMFS。

在 INITRAMFS 模式中, RootFS 被包含在内核镜像中。
• 镜像 → 镜像(内核) + rootfs.cpio(用于 Zynq® UltraScale+™ MPSoC)

自定义Rootfs

创建&添加定制库

  1. 从您工作站上的 PetaLinux 工程中运行 petalinux-create -t apps,创建用户应用程序:
    $ cd
    $ petalinux-create -t apps --template c --name <-user-library-name> --enable
    新的应用程序源可在 /project-spec/meta-user/recipes-apps/libsample 目录
    中找到。
  2. 更改为新创建的应用程序目录。
    $ cd /project-spec/meta-user/recipes-apps/libsample
  3. 编辑 project-spec/meta-user/recipes-apps/libsample/libsample.bb 文件。
  4. 编辑 project-spec/meta-user/recipes-apps/libsample/files/libsample.c 文件。该文件看起来应该像下面这样:
    #include <stdio.h>
    #include “libsample.h”
    int main(int argc, char **argv)
    {
    printf(“Hello World!\n”);
    return 0;
    }
    void samplelib()
    {
    printf(“Hello, Welcome to PetaLinux – samplelib !\n”);
    }

Zynq UltraScale+MPSoC: Embedded Design Tutorial

Zynq UltraScale+ Devices
ZynqUltraScale+ MPSoC PS组包括以下引擎:
•基于四核Arm Cortex-A53的应用处理单元(APU)
•基于双核Arm Cortex-R5的实时处理单元(RPU)
•Arm Mali-400基于MP2的图形处理单元(GPU)
•专用平台管理单元(PMU)和配置安全单元(CSU)
•高速外设列表,包括显示端口和SATA
PL部分,除了可编程逻辑单元,也与少数高性能外设集成,包括以下:
• Integrated Block for PCI Express
• Integrated Block for Interlaken
• Integrated Block for 100G Ethernet
• System Monitor
• Video Codec Unit

Vitis Integrated Design Environment (IDE)

Linux

initramfs

是在ramfs的cache实现上加了一层很薄的封装,其他内核开发人员编写了一个改进版tmpfs,这个文件系统上的数据可以写出到交换分区,而且可以设定一个tmpfs装载点的最大尺寸以免耗尽内存。initramfs就是tmpfs的一个应用。
https://www.cnblogs.com/CHYI1/p/5551022.html

附录

$ petalinux-create --type project --template zynqMP --name <PROJECT_NAME>
$ cd
$ petalinux-config --get-hw-description=<PATH-TO-HDF/XSA DIRECTORY 文件夹目录,而非文件>
petalinux-build
% cd images/linux
% petalinux-package --boot --format BIN --fsbl zynqmp_fsbl.elf --u-boot u-boot.elf --pmufw pmufw.elf --fpga system.bit --atf bl31.elf --force

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Petalinux是一款由Xilinx开发Linux嵌入式开发工具,它可以用于构建、配置和定制嵌入式Linux系统。Petalinux主要用于Xilinx的Zynq系列片上系统(SoC)平台,使开发者能够轻松地将Linux操作系统和自定义应用程序部署到嵌入式系统中。 Petalinux具有很多强大的功能和特点。首先,Petalinux支持快速创建和构建基于Yocto Project的Linux嵌入式系统,用户可以通过命令行或图形界面进行系统的配置和定制,包括选择硬件配置、添加组件、进行软件包管理等。其次,Petalinux提供了一系列工具和功能,如设备树生成器、内核配置工具、文件系统生成器等,使开发者可以方便地管理和配置底层硬件和软件。 此外,Petalinux还提供了一些高级功能,如快速启动、动态更新和远程调试等。快速启动功能可以极大地减少系统启动时间,提高嵌入式系统的响应性能。动态更新功能可以实现在线更新系统的应用程序和驱动,而不需要重新启动整个系统。远程调试功能可以通过网络连接实现远程调试和访问目标设备上的日志信息。 总结来说,Petalinux是一种功能强大的嵌入式Linux开发工具,可以帮助开发者快速构建、配置和定制嵌入式Linux系统。无论是在嵌入式系统的原型设计阶段还是在产品发布后的维护和更新阶段,Petalinux都能提供方便和高效的开发环境和工具,以满足不同开发需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值