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内存

  • 25
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
文档共60页。主要向初学者提供了Zynq开发的技术方向,针对不同应用给出了基本的参考文档;同时对Zynq双核AMP加载方式做了详细描述,对Zynq的fsbl启动流程做了简单介绍。章节如下: Zynq User Guide 1 介绍 4 2 快速上手指南 4 3 多核开发教程 4 3.1 AMP开发说明 6 3.1.1 快速生成amp工程 6 3.1.2 Generating Boot File 8 3.1.3 烧写程序 9 3.1.4 启动 10 3.1.5 调试 10 3.1.6 总结 11 3.2 SMP开发说明 11 4 ZC706启动代码分析 11 4.1 启动代码 12 4.2 FSBL流程(FOR AMP) 13 4.3 CPU0启动CPU1流程 14 5 程序在线烧写方案及流程 14 5.1 程序烧写需求 14 5.2 提出该需求的原因 14 5.3 程序烧写方案 14 5.3.1 BOOT.BIN组成 14 5.3.2 BOOT.BIN生成方法 15 5.4 FSBL.BIN和APP.BIN等的生成 15 5.5 制作*BIN及烧写的具体步骤 15 5.5.1 制作*bin流程 15 5.5.2 BOOT.bin制作过程 15 5.5.3 FSBL.bin和APP.bin等的生成过程 22 5.6 烧写BOOT.BIN步骤 26 5.6.1 通过SDK工具烧写步骤 26 5.6.2 通过上位机烧写软件的烧写步骤 29 5.6.3 通过串口调试助手烧写步骤 29 6 Zynq Qspi控制器 30 6.1 基本特性 30 6.2 I/O接口 31 6.3 QSPI控制器模式 33 6.3.1 I/O模式 33 6.3.2 线性地址(linear address)模式 33 6.3.3 传统(legacy)SPI模式 34 6.4 QSPI 例程 34 6.5 QSPI控制器支持访问32MB方法 35 6.5.1 Bank地址寄存器(Bank address register) 35 6.5.2 扩展地址模式(Extended address mode) 35 6.5.3 使用新写命令(New commands) 35 6.6 QSPI FLASH选择 35 6.7 作为BOOT器件考虑 35 7 µC/OS系统启动指南 36 7.1 INTRODUCTION 36 7.1.1 Software Requirements 36 7.1.2 Hardware Requirements 36 7.2 HARDWARE DESIGN 37 7.2.1 Step 1. Invoke the Vivado IDE and Create a project 37 7.2.2 Step 2. Create an IP Integrator Design 39 7.2.3 Step 3. Add and setup the Zynq processor system IP block 39 7.2.4 Step 4. Customize the Zynq block for our design 41 7.2.5 Step 5. Add the soft peripherals 45 7.2.6 Step 6. Generate HDL Design Files 47 7.2.7 Step 7. Synthesis, Implement and Generate Bitstream 48 7.3 SOFTWARE DESIGN 49 7.3.1 Step 1. Installation of the µC/OS Repository 49 7.3.2 Step 2. Generate the µC/OS BSP 50 7.3.3 Step 3. Build and Debug the Demonstration Project 54 7.3.4 Step 4. Program the AXI Timer 0 with the ucos_axitimer Driver 55 7.3.5 Step 5. Program the AXI Timer 1 with the Xilinx tmrctr Driver 58 7.4 CONCLUSION 59 8 Linux系统启动指南 59
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、付费专栏及课程。

余额充值