0. 芯片启动概述
- ZYNQ-7000系列芯片运行Linux操作系统需要BOOT.BIN文件、image.ub文件和rootfs。
- BOOT.BIN文件由fsbl.elf、bitstream和u-boot.elf(裸机elf程序)文件组成。fsbl.elf是由xilinx设计的,由OCM加载执行,有两个主要功能。第一是用于加载bitstream到PL,第二是根据BOOT.BIN文件组成,执行u-boot或是裸机elf程序。bitstream文件是FPGA的配置文件。裸机elf程序用于在不启动操作系统的情况下运行一些软件。u-boot.elf是一种bootloader程序,可以根据不同的硬件情况,在不同的场景下引导操作系统镜像的执行。
- image.ub文件是由操作系统的镜像文件uImage和设备树文件dtb组成。uImage由压缩过的操作系统镜像zImage和一段由u-boot在引导时会读取的头image_header_t(64B)组成,这个头用于储存u-boot在引导系统时所要获取的一些信息。zImage由未压缩的内核镜像vmlinux和解压代码组成。在u-boot引导内核时,会解压zImage到内存中执行。
- rootfs是linux的根文件系统,在linux系统启动过程中,必须要挂载这样一个根文件系统。我们的可执行程序以及所用到的库文件、linux系统的配置文件等,都会存储在这样一个根文件系统中。
1. SD卡启动
- SD卡启动的最大优点就是方便可携带,SD卡被分为两个分区。一个FAT32分区存放BOOT.BIN和image.ub文件,一个ext4分区存放rootfs。
- zynq-7000有两个SD控制器,在blockdesign里配置zynq核时,根据硬件原理图显示(SD连到了PS端,电路接口与zynq的MIO40-45相连),选择SD0并选择正确的MIO口。


- 输入
petalinux-config --get-hw-description -p ./配置硬件。 - 选择SD0作为首选SDIO。

- 选择SD作为BOOT.BIN的存储介质。

- 默认FLASH作为u-boot环境变量的存储介质,u-boot会根据下面的FLASH分区表到指定的位置读取环境变量。忽略除bootenv外的其它部分,因为FLASH中根本就没有这些部分,它们都在SD卡上。在这里只会用到FLASH中的bootenv。



本文详细介绍了ZYNQ-7000系列芯片的四种启动方式:SD卡启动、QSPI_FLASH启动、QSPI_FLASH+EMMC启动及QSPI_FLASH+RAMFS启动。重点讨论了每种启动方式所需文件、配置步骤及其优缺点。
最低0.47元/天 解锁文章
4273

被折叠的 条评论
为什么被折叠?



