zynq及zynqMP启动方式总结/petalinux启动方式总结/petalinux启动过程讲解

zynq及zynqMP系列启动流程

启动所需文件和顺序

Boot ROM → fsbl(fsbl.elf) → bitstream(system.bit)→ u-boot(u-boot.elf) → bootscr(boot.scr)→ kernel(Image)→ device tree(system.dtb)→ rootfs

Boot ROM:直接固化在zynq硬件,开发者无法修改,启动模式是在这里设置(QSPI,SD,JTAG)

fsbl(first stage boot loader):第一阶段加载程序,运行了这个,系统才能够运行裸机程序或者是引导操作系统的u-boot

bitstream:PL端硬件加载文件

u-boot:U-Boot引导加载程序的可执行映像文件

注:fsbl(fsbl.elf) → bitstream(system.bit)→ u-boot(u-boot.elf):这三个可以合称为一个BOOT.bin

bootscr:加载下面文件的脚本

kernel:内核加载可执行镜像文件,操作系统的核心组件

device tree:设备树文件,用于嵌入式系统中的设备驱动和操作系统内核之间的通信

rootfs :根文件系统,包含了操作系统运行所需的文件和目录结构

展开介绍

Zynq 是通过片上CPU完成对芯片的配置,也就是PS和PL的配置是通过 PS 处理器 ARM 核来实现的。需要注意的是,与传统的 Xilinx 7 系列 FPGA 芯片不同,Zynq 是不支持从 PL 端进行直接启动配置的,一定要通过 PS 部分来完成。

Zynq 的具体启动配置是分级进行的,一共可以分为3个阶段,可以用0~2来表示:

  • Stage 0: BootROM 阶段

  • Stage 1: FSBL (First Stage Boot loader)阶段

  • Stage 2: SSBL (Second Stage Boot loader)阶段

BootROM 阶段:

读取启动方式的MIO引脚(JTAG、QSPI、SD)

全程在PS端完成!

FSBL (First Stage Boot loader)阶段:

  1. 完成 PS 的初始化

  2. 加载 PL 的bit流文件,完成 PL 配置

  3. 加载 SSBL 引导程序或是ARM的裸跑程序到 DDR

  4. 跳转执行 SSBL 或裸跑程序

SSBL (Second Stage Boot loader)阶段:

裸机不需要到这一步,这一步主要是用来运行操作系统

SD卡启动

1、格式化SD卡分区

把SD卡格式化为两个分区:

(1)FAT32分区:主要存储启动必须的文件

-- BOOT.bin (fsbl、bit、u-boot)

-- iamge.ub fix版的内核文件(kernel,设备树、rootfs(一般存放到ext4分区))

-- Image,system.dtb (如果不用fix版本,即需要把这两个文件放到FAT分区)

注:image.ub和{Image system.dtb} 选择一个即可

(2)ext4分区:主要存储根文件系统

-- rootfs.tar.gz (需要把这个文件解压到此分区)

解压命令:$ sudo tar xvf rootfs.tar.gz -C /media/rootfs ({/media/rootfs}为ext4分区名)

(3)petalinux设置部分

选择根文件系统的类型:SD

选择设备名称:/dev/sdblk0p1 (根据自己的情况填写)

通过QSPI FLASH启动

petalinux2021.2版本

1、分配FLASH内存

这里面的size,只是表示分区的存储大小,而不是起始地址

2、修改kernel在FLASH的位置

petalinux-config→ u-boot Configuration→ u-boot script configuration→ QSPI/OSPI image offsets

0x1940000:0x1900000 + 0x40000 (根据第一步分区,进行计算),表示kernel的起始地址

3、配置boot.scr的地址

petalinux-config -c u-boot → ARM architecture → Boot script offset

0x3240000:0x1900000 + 0x4000 + 0x1900000 ,表示boot.scr文件在FLASH中的位置

4、打包生成BOOT.bin

根据上述设置好的地址,打包成BOOT.bin (包含bit文件)

petalinux-package --boot --force --format BIN --fsbl --fpga --pmufw --u-boot --kernel images/linux/Image --offset 0x1940000 --cpu a53-0 --boot-script --offset 0x3240000
 --boot:指定要创建的镜像类型为引导镜像。
 --force:强制执行操作,即覆盖现有的输出文件。
 --format BIN:指定输出镜像的格式为二进制格式。
 --fsbl:将 FSBL(First Stage Boot Loader)添加到镜像中。
 --fpga:将 FPGA 位流文件添加到镜像中。
 --pmufw:将 PMU 固件添加到镜像中。
 --u-boot:将 U-Boot 添加到镜像中。
 --kernel images/linux/Image:指定 Linux 内核映像文件的路径。
 --offset 0x1940000:指定将内核映像文件添加到镜像时的偏移地址。
 --cpu a53-0:指定目标处理器核心。
 --boot-script:将引导脚本(boot script)添加到镜像中。
 --offset 0x3240000:指定将引导脚本添加到镜像时的偏移地址。

5、下板操作

(1)首先用ramdisk版本,进入linux,把rootfs文件解压到emmc的ext4分区,(创建分区,参考petalinux_learning)

  tar xvf rootfs.tar.gz -C /media/rootfs

(2)把生成的BOOT.bin通过vitis,烧入到FLASH,(烧写之前,可以通过u-boot模式先把FLASH给擦除)

擦除指令:sf erase 0 0x4000000 // 64MB内存

  • 27
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WARNING: /home/xyc/work/petalinux_prj/20230518/zynq_petalinux/build/tmp/work/zynqmp_generic-xilinx-linux/linux-xlnx/5.10+git999-r0/temp/run.do_kernel_configme.126308:414 exit 1 from 'exit 1' WARNING: Backtrace (BB generated script): #1: bbfatal, /home/xyc/work/petalinux_prj/20230518/zynq_petalinux/build/tmp/work/zynqmp_generic-xilinx-linux/linux-xlnx/5.10+git999-r0/temp/run.do_kernel_configme.126308, line 414 #2: do_kernel_metadata, /home/xyc/work/petalinux_prj/20230518/zynq_petalinux/build/tmp/work/zynqmp_generic-xilinx-linux/linux-xlnx/5.10+git999-r0/temp/run.do_kernel_configme.126308, line 251 #3: do_kernel_configme, /home/xyc/work/petalinux_prj/20230518/zynq_petalinux/build/tmp/work/zynqmp_generic-xilinx-linux/linux-xlnx/5.10+git999-r0/temp/run.do_kernel_configme.126308, line 152 #4: main, /home/xyc/work/petalinux_prj/20230518/zynq_petalinux/build/tmp/work/zynqmp_generic-xilinx-linux/linux-xlnx/5.10+git999-r0/temp/run.do_kernel_configme.126308, line 459 Backtrace (metadata-relative locations): #1: bbfatal, /home/xyc/work/petalinux_prj/20230518/zynq_petalinux/components/yocto/layers/core/meta/classes/logging.bbclass, line 60 #2: do_kernel_metadata, /home/xyc/work/petalinux_prj/20230518/zynq_petalinux/components/yocto/layers/core/meta/classes/kernel-yocto.bbclass, line 159 #3: do_kernel_configme, /home/xyc/work/petalinux_prj/20230518/zynq_petalinux/components/yocto/layers/core/meta/classes/kernel-yocto.bbclass, line 395 ERROR: Logfile of failure stored in: /home/xyc/work/petalinux_prj/20230518/zynq_petalinux/build/tmp/work/zynqmp_generic-xilinx-linux/linux-xlnx/5.10+git999-r0/temp/log.do_kernel_configme.126308 NOTE: recipe linux-xlnx-5.10+git999-r0: task do_kernel_configme: Failed ERROR: Task (/home/xyc/work/petalinux_prj/20230518/zynq_petalinux/components/yocto/layers/meta-xilinx/meta-xilinx-bsp/recipes-kernel/linux/linux-xlnx_2021.1.bb:do_kernel_configme) failed with exit code '1' NOTE: recipe libgcc-initial-10.2.0-r0: task do_configure: Succeeded NOTE: Tasks Summary: Attempted 545 tasks of which 0 didn't need to be rerun and 1 failed. ERROR: bitbake failed to configure u-boot ERROR: Failed to config u-boot. Check the /home/xyc/work/petalinux_prj/20230518/zynq_petalinux/build/config.log file for more details...
05-19
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值