文章目录

  • petalinux设计流程简介
    • 设计流程步骤
    • 1. 创建新工程 petalinux-create
      • petalinux-create -t project
      • petalinux-create -t COMPONENT
    • 2. 内核配置petalinux-config
    • 3. 构建系统镜像:petalinux-build
    • 4. 生成启动镜像:petalinux-package
      • 命令
      • 例子
      • 4.1 boot
      • 4.2 prebuilt
    • 5 拷贝镜像文件
    • petalinux-boot
    • SD boot
    • 自定义工程
      • 设置 INITRAMFS 启动
  • 自定义Rootfs
    • 创建&添加定制库
  • **Zynq UltraScale+MPSoC: Embedded Design Tutorial**
  • Linux
    • initramfs
  • 附录

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 qemu petalinux-boot --qemu
Update the PetaLinux tool system software components petalinux-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 Range Default Value
-t,–type TYPE 指定要创建的对象类型.必需的. • project •apps •modules None
-n,–name NAME 创建具有指定名称的对象。当从BSP源创建项目时,这是可选的。否则,这是必需的。 用户指定 当从BSP源创建项目时,该项目使用源BSP的名称
-p,–project PROJECT PetaLinux项目目录路径,用于在项目中创建组件。这是可选的。 用户指定 当前目录
–force 覆盖现有的文件。可选的 None None
-h,–help 显示使用信息。可选的 None None

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

petalinux设计流程相关推荐

  1. 【正点原子FPGA连载】第六章Petalinux设计流程实战摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Linux开发指南

    1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=692450874670 3)全套实验源码+手册+视频下载地址: h ...

  2. 【正点原子FPGA连载】第十六章Petalinux设计流程实战摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Linux开发指南

    1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=692450874670 3)全套实验源码+手册+视频下载地址: h ...

  3. ZYNQ - 嵌入式Linux开发 -06- petalinux设计流程

    写在前面 本文主要对petalinux设计流程进行简略介绍. petalinux设计流程介绍 PetaLinux 工具提供了在 Xilinx 处理系统上自定义. 构建和部署嵌入式 Linux 解决方案 ...

  4. 5、赛灵思-Zynq UltraScale+ MPSoC学习笔记:Petalinux 的设计流程及定制Linux系统

    5.赛灵思-Zynq UltraScale+ MPSoC学习笔记:Petalinux 的设计流程及定制Linux系统 声明:本文是学习赛灵思 Zynq UltraScale+ MPSoC 5EV过程中 ...

  5. MySQL 学习笔记(14)— 数据库设计流程、实体关系图、第一范式、第二范式、第三范式、外键使用

    本文参考:https://gitbook.cn/gitchat/column/undefined/topic/5db92c12a9c3a53bc3800f0c 1. 数据库设计流程 数据库设计是对数据 ...

  6. 敏捷开发下的B端交互设计流程

    交互设计师在这整个流程中,需要主动推动项目的进展,积极沟通,充分协作.在需求阶段充分了解需求,设计阶段不断与产品经理(需求方)及相关人员(视觉.开发等)沟通,开发阶段积极传递设计目标及效果,有变更及时 ...

  7. 【 FPGA 】Vivado和ISE设计流程比较(重点是Vivado IDE)

    ISE工具设计流程: NGDBuild表示翻译,MAP表示映射,PAR表示布局和布线.具体查看博文:XIlinx FPGA开发基本流程(一)(总介绍) 每一步都需要不同的数据模型. Vivado设计流 ...

  8. ASIC开发设计流程

    ASIC开发设计流程 1. 使用语言:VHDL/verilog HDL 2. 各阶段典型软件介绍: a) 输入工具: Summit Summit 公司 b) 仿真工具: VCS, VSS Synops ...

  9. UI产品设计流程中的14个要点

    自从我在 Dribbble 上贴了一幅我的产品设计成果,受到了大家伙热烈的反馈,对此我深受鼓励,我决定写下这篇文章,用来记录我这两年里作为产品设计师,所学到的东西.说起来有点惭愧,这几年我一直都在使用 ...

  10. 产品管理|产品设计流程[完整版]

    产品设计(Product Design)没有一个合乎情理的流程,即使人们总是呼吁敏捷开发(AD:Agile Development).极限编程(XP:Extreme Programming),但必要的 ...

最新文章

  1. 【opencv系列08】OpenCV4.X图像融合操作
  2. 2-RabbitMQ核心概念及AMQP协议
  3. 深入理解LSM-Tree
  4. DS树+图综合练习--构建邻接表
  5. C/C++中的常量指针与指针常量
  6. /bin/false /sbin/nologin
  7. java GC的优化
  8. 如何为Swift进行宏定义
  9. visual studio code typescript 防止 import statement 断行
  10. 【2022-01-06】JS逆向之QCC请求头参数
  11. Unity中世界坐标与相对于某个物体的相对坐标的转换
  12. 小米手机访问电脑共享文件_小米随身Wifi让手机共享电脑文件教程
  13. airtest自动化测试
  14. Python: 使用sphinx生成python项目文档
  15. mybatis错误——java.io.IOException Could not find resource comxxxxxxMapper.xml
  16. Quartz简介及应用场景
  17. 针对python代码下载youtub视屏报错修复
  18. 如何使用R语言拟合ANOVA模型
  19. 深入浅出理解数据分析系列之:Python安装Excel文档库openpyxl和Pycharm为项目安装Excel文档库openpyxl
  20. 验证通扫描仪安装使用方法

热门文章

  1. VIsualSVNSever 和SVN安装教程
  2. 黑马java学习笔记4 强化部分 常见API
  3. Egoist (罪恶王冠) | mmd动作+镜头下载
  4. spring自带的md5加密工具
  5. php与阿里云短信接口接入
  6. 4k hidpi 黑苹果_【图片】为了让Mac pro也实现hidpi 把4k的分辨率显示成到1920,我今天也是拼了,下午研究了半天【macpro吧】_百度贴吧...
  7. 疏忽导致易接SDK OpenGL error
  8. 网易视频云:搜索意图识别浅析
  9. IE插件加载题目调试
  10. Python中pyserial库