1.bootrom是固化在zynq芯片内部非易失性存储其中的一段代码;
2.bootrom代码存储在zynq的256k的sram以及128k的rom中,掉电不丢失
3.bootrom用于启动,引导fsbsl代码,找到boot.bin所在的位置,并从中提取fsbl,
将fsbl代码拷贝到zynq中的256k-sram中运行,这个时候DDR还没有被初始化,这个是fsbl的工作
3.BootROM这段代码通常保存在Nor flash中,特点是芯片内执行(XIP ,eXecute In Place),这样应用程序可以直接在Flash闪存内运行,不必再把代码读到系统RAM中。
要完成上述功能,BootROM必须满足如下要求:
包括SD卡或者QSPI等存储设备的驱动程序
支持文件系统操作(至少支持FAT32,因为将SD卡格式化为FAT32后拷贝进BOOT.BIN的)
对于基于zynq的嵌入式Linux系统,BootROM引导启动FSBL,FSBL引导启动U-Boot,U-boot引导启动Linux内核。
注意:BootROM它是一个程序/代码,并且已经固化到ZYNQ芯片内部。专门存放在片内ROM中。ZYNQ内部包含256K RAM(SRAM)以及128K ROM(SROM),所以BootROM代码固化在SROM中,片内的程序一般都固化在NOR FLASH(支持XIP)。且可以直接在NOR FLASH运行。
Zynq使用RSA公钥加密标准进行固件认证,确保启动过程的安全性。核心密钥包括主私钥(PSK)和主公钥(PPK),其中PPK用于生成次公钥(SPK),SPK与次私钥(SSK)成对使用,用于验证分区数据(如bin或elf文件)的正确性。 1 在启动阶段,BootROM中的PPK用于验证BootHeader中的SPK签名,从而认证后续加载的固件分区。
1.bootrom是固化在ROM中的一段代码
2.bootrom负责上电或者复位后的初始引导过程,位于PS端,不可修改
3.bootrom用于初始化基本外设,以及加载后续启动的镜像
4.bootrom的核心功能:
a.初始化外设:上电后,bootrom首先初始化nand,nor,quad-spi,sd卡等
外部存储器,使得ARM核能够访问这些设备
b.bootrom后续依据启动模式引脚MIO[8:2]的配置,从指定的外部存储设中加载第一
阶段的fsbl
c.fsbl加载:bootrom将fsbl从外部存储读取到OCM上或者直接在flash中执行
Zynq的启动过程分为多个阶段:
Stage 0(BootROM执行):BootROM运行,初始化基础外设并加载FSBL。
1
2
Stage 1(FSBL执行):FSBL负责初始化PS端(如DDR内存)、配置PL端(通过BIT文件),并加载第二阶段引导程序(SSBL)或直接运行裸机程序。
1
2
Stage 2(用户程序执行):系统跳转至SSBL或裸机程序,最终运行用户应用或操作系统。
1
关键细节
启动模式选择:通过MIO[8:2]引脚设置决定启动源(如SD卡、Flash等),这些引脚在启动后可作为普通GPIO使用。
2
PL配置依赖:BootROM本身不完成PL的配置,仅为其准备环境;PL的配置由FSBL通过PCAP接口实现。
1
2
安全启动:在安全模式下,启动镜像会经过解密和认证后才执行,确保代码完整性。
2
BootROM是Zynq启动链的起点,其设计确保了系统能够可靠地加载用户应用
ZYNQ RSA认证!