ZYNQ SoC 的启动由片上的 BootROM 开始。片上 BootROM 是 ZYNQ 芯片上的一块非易失性存储器,它包含了 ZYNQ 所支持的配置器件的驱动, 而且里面的代码是不可修改的。 BootROM 中的代码首先会在片外的非易失性存储器中寻找一个头文件, 头文件里定义了一些启动信息, 用于配置 BootROM 的运行。 这些启动信息包括是程序是否就地执行( excute in place) , FSBL 的偏移地址以及是否为安全模式等。头文件的存在确保 BootROM 能够按照配置器件被格式化后的方式操作。
BootROM 执行之后,下一个配置阶段被称为 First-Stage Boot Loader ( FSBL), 它是由设计者所创建的。FSBL 可以配置 DDR 存储器和硬件设计过程中所定义的一些外设。这些器件需要在加载软件应用及配置 PL之前就初始化完毕。
总结一下 FSBL 的工作内容:
1、 初始化 PS;
2、 如果提供了 BIT 文件,则配置 PL;
3、 加载裸机应用程序到 DDR 中,或者加载 Second-Stage Boot Loader( SSBL);
4、 开始执行裸机应用程序,或者 SSBL。
PL 的配置是通过处理器配置访问接口( Processor Configuration Access Port, PCAP) 进行的,它允许对PL 进行部分配置或者完全配置。有关 PL 的部分配置我们会在其他章节予以介绍。 一旦 PS 启动运行之后,PL 可以在任意时刻被配置, FSBL 和应用程序可以清除、 配置以及使能 PL。
要重建一个 ZYNQ 的启动镜像我们需要执行以下文件:
1、 Boot ROM 头文件:控制 Boot ROM 设置,比如就地执行、 加密、 FSBL 偏移量、镜像文件大小等;
2、 First-Stage Boot Loader;
3、 PL 配置文件, 即 BIT 文件;
4、 运行在 PS 上的软件应用程序。
ZYNQ SoC 使用多个模式引脚来决定配置器件的类型, 软件的存储位置以及其他的系统设置, 这些引脚共享 PS 端的 MIO 引脚。 总共有 7 个模式引脚, 分别为 MIO[8:2]。其中,前四个引脚定义启动模式,第五个引脚定义是否使用 PLL, 第六个和第七个引脚定义上电过程中 MIO bank0 和bank1 的 bank 电压,如下图所示:
整个系统的启动过程如下图所示:
在上电复位( Power On Reset, POR) 之后,硬件会采集模式引脚的状态, 禁用器件内部的模块,并根据模式引脚的设置选择是否使能 PS 的时钟锁相环。而在其他的复位条件下, 比如软复位, 硬件不会执行上述的动作。 需要注意的是, PS 的复位按键,属于上电复位( POR),如果按下 PS 的复位按键,硬件会重新采集模式引脚的状态。
ZYNQ 启动分析_pl power status off-CSDN博客
ZYNQ程序固化——ZYNQ学习笔记7_zynq sd卡启动-CSDN博客