3.1 固化简介

如果需要板卡中程序掉电不丢失,则需要对程序进行固化,ZYNQ7000 SOC芯片可以从Flash启动,也可以从SD卡启动,上电后,ZYNQ根据模式管脚的设定,选用boot的方式。

核心模式开关:

ZYNQ程序固化-风君雪科技博客

启动模式:

ZYNQ程序固化-风君雪科技博客

固化ZYNQ程序需要为这个程序做一个镜像文件,该镜像文件需要PL侧的bit文件,PS侧的elf文件,还需要一段代码将bit文件和elf文件配置,这段代码就是FSBL.elf。

因此制作一个镜像文件需要三个文件:

(1)、.bit

(2)、.elf

(3)、FSBL.elf        

3.2 SD卡启动

从SD卡启动需要将镜像文件固化到SD卡,设置拨码开关,使系统从SD模式启动。那么每次断电后,系统都会从SD卡启动。

ZYNQ的启动过程与大多数arm类似,启动过程分为三个阶段,阶段0、阶段1、阶段2:

阶段0

传统的bootROM过程,ZYNQ的ROM中固化了一段不可修改的程序,只要ZYNQ一上电,这段程序就会执行,它将对ZYNQ的NAND、SD等基本外设控制器进行初始化。把SD卡这类易失的存储器件进行初始化后,就会把其中的程序拷贝到ZYNQ的OCM(On Chip Memory)。这个被拷贝到RAM上执行的程序就是要制作的文件——BOOT.bin。

阶段1

BOOT.bin加载到OCM上开始执行,BOOT.bin由FSBL.elf+工程.bit+工程.elf构成,阶段1首先配置PS部分,PS部分完成初始化后,再配置PL部分,最后去加载阶段2的代码。

阶段2

可选,配合Linux启动过程。

制作BOOT.bin文件:

ZYNQ程序固化-风君雪科技博客

对应于原理图上的:

ZYNQ程序固化-风君雪科技博客

3.3 QSPI Flash固化

设置拨码开关,将镜像文件烧写进FLASH,使系统从QSPI-FLASH模式启动,那么每次断电后,系统都会从FLASH启动。

制作BOOT.bin文件:

ZYNQ程序固化-风君雪科技博客

对应于原理图上的:

ZYNQ程序固化-风君雪科技博客

3.4 生成BOOT.bin文件

新建vivado工程,生成bitstream,导出到SDK,程序设计,然后!创建一个FSBL工程,在要固化的工程上右击,选择create boot Image,然后可以看到

ZYNQ程序固化-风君雪科技博客

       然后选择Create Image,即可在当前工程下bootimage目录下看到boot.bin文件,将该BOOT.bin文件复制到SD卡,断电情况下设置拨码开关,之后上电,开机后系统从SD卡启动,掉电后程序也不会消失。(放到SD卡的bin文件,文件名必须是BOOT.bin,否则不识别)

ZYNQ程序固化-风君雪科技博客