ZYNQ Soc的启动和配置过程中,既需要PS的配置信息,又需要PL的配置信息。
ZYNQ系列是没有办法只固化PL的程序的(NorFlash、SD卡等是连接在PS端的)。
PS 支持多种片外非易失性存储器(Quad SPI Flash,NAND Flash,NOR Flash 或 SD 卡)。
ZYNQ SoC 的启动由片上的 BootROM
开始。
片上 BootROM 是 ZYNQ 芯片上的一块非易失性存储器, 它包含了 ZYNQ 所支持的配置器件的驱动,里面的代码是不可修改的。
BootROM 中的代码首先会在片外的非易失性存储器中寻找一个头文件,头文件里定义了一些启动信息,用于配置 BootROM 的运行。
BootROM 执行之后,下一个配置阶段被称为 First-Stage Boot Loader(FSBL),它是由设计者所创建的。 FSBL 可以配置 DDR 存储器和硬件设计过程中所定义的一些外设。这些器件需要在加载软件应用及配置 PL 之前就初始化完毕。
FSBL 的工作内容:
PL 的配置是通过处理器配置访问接口(Processor Configuration Access Port,PCAP)进行的,它允许对 PL 进行部分配置或者完全配置。
ZYNQ 的启动镜像需要如下文件:
Boot ROM Header文件是自动生成的。
ZYNQ SoC 使用多个模式引脚来决定配置器件的类型、软件的存储位置以及其他的系统设置,这些引脚共享PS 端的MIO 引脚。
总共有 7 个模式引脚,分别为 MIO[8:2],前四个引脚定义启动模式,第五个引脚定义是否使用 PLL,第六个和第七个引脚定义上电过程中 MIO bank0 和 bank1 的 bank 电压。
通常模式下,锁相环PLL是启动的,PS-CLK提供时钟信号,经过三路PLL:
在上电复位(Power On Reset,POR)之后,硬件会采集模式引脚的状态,禁用器件内部的模块,并根据模式引脚的设置选择是否使能 PS 的时钟锁相环。
整个系统的启动过程如下图
在Block Design 的ZYNQ Processing System模块中要使能SD外设和QSPI外设。
在创建platform的步骤中需要勾选Generate boot components (生成启动组件)选项,勾选之后,软件会自动在硬件平台工程里生成 fsbl 的相关文件。
工程编译后,在系统工程和应用工程下会各自生成一个Debug文件夹。
同时,硬件平台工程文件夹下也生成了 fsbl.elf(启动引导文件)
也可以手动生成BOOT.BIN文件
bif文件是BOOT.BIN文件的参数描述。
3个文件的添加顺序不能乱。
将生成的 BOOT.bin 文件拷贝到 SD 卡根目录下。(SD卡文件系统为FAT32格式)。
将板卡启动模式设置为从SD卡启动。
将程序固化到 QSPI Flash 需要使用 JTAG 下载器。( 此时要设置为从JTAG启动 )
Vitis 软件的菜单栏中点击"Xilinx->Program Flash"。
在弹出的 Program Flash Memory 界面中中配置BOOT.BIN文件路径和FSBL文件路径。
点击"Program",开始对 Flash 进行编程。
Flash编程完成后,将板卡启动模式设置为从QSPI Flash启动。
【正点原子】启明星ZYNQ之嵌入式Vitis开发指南v1_2