zynq学习笔记

文章目录

  • petalinux设计流程简介
    • 设计流程步骤
    • 1. petalinux-create
      • petalinux-create -t project
      • petalinux-create -t COMPONENT
    • 2. petalinux-config
    • 3. petalinux-build
    • 4. petalinux-package
      • boot
      • prebuilt
    • petalinux-boot
    • SD boot
    • 自定义工程
      • 设置 INITRAMFS 启动
  • 自定义Rootfs
    • 创建&添加定制库
  • **Zynq UltraScale+MPSoC: Embedded Design Tutorial**

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

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

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

Option 功能 Value Range Default Value
-t,–type TYPE Specify the TYPE of object to create. This is required. • 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文件本身的完整路径。
petalinux-config --get-hw-description=

Image Packaging Configurations -> Root filesystem type -> SD card
zynq学习笔记_第1张图片

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.

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]

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。它可以指定安装程序路径和安装目录路径。

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

prebuilt

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

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

bootable images storage

petalinux-boot

• 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
    #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)

你可能感兴趣的:(FPGA)