本文主要参考:UG585
一、简介
PS_POR_B复位引脚取消置位后,硬件会对引导引脚进行采样,可选择启用PS时钟PLL。然后,PS开始执行存储在芯片内ROM中的BootROM代码以引导系统。POR会将整个设备重置,不保存先前的状态。非POR类型的复位也会导致执行BootROM,但不会对引导引脚进行采样。在非POR复位后,一些寄存器值会被保留,并且设备会知道其先前的安全模式。非POR复位包括PS_SRST_B引脚和多个内部复位源。
BootROM是在APU中首次运行的软件。BootROM在CPU 0上执行,CPU 1执行等待事件(WFE)指令。BootROM的主要任务包括配置系统,将引导设备中的Boot Image FSBL/User代码复制到OCM,然后分支代码执行到OCM。可选地,FSBL/User代码可以直接从Quad-SPI或NOR设备中在非安全环境下执行。
PS主引导设备保存一个或多个引导映像。引导映像由BootROM头部(也称为引导映像头部)和第一阶段引导加载程序(FSBL)组成。引导设备还可以保存用于配置PL的比特流和嵌入式操作系统,但BootROM代码不会访问它们。用于引导的闪存存储设备可以是Quad-SPI、NAND、NOR或SD卡。
BootROM的执行流程受引脚配置、BootROM头部以及BootROM代码发现的系统信息的影响。BootROM可以在具有加密FSBL/User代码的安全环境中执行,也可以在非安全环境中执行。BootROM执行完毕后,FSBL/User代码负责系统,如《Zynq-7000 SoC软件开发指南》(UG821)中所述。
为了开发,系统可以以JTAG模式启动。或者,在非安全的闪存设备引导后,可以启用JTAG。JTAG始终表示非安全环境,但允许访问CPU复杂(APU)中的Arm调试访问端口(DAP)控制器和PL中的AMD测试访问端口(TAP)控制器。
1.1、PS Master Boot Mode
在主引导模式下,系统从闪存存储设备引导。在这种情况下,BootROM配置PS以访问引导设备,读取BootROM头部,验证头部,然后通常将FSBL/User代码复制到OCM存储器中。主模式可以是安全或非安全环境。
在安全模式下,引导映像始终由CPU写入OCM存储器。然后,它通过DMA传输到AES/HMAC单元进行解密和身份验证。解密后的引导映像被写回到OCM存储器,并在BootROM完成后执行。安全硬件在本章和《设备安全引导》中有描述。
在非安全模式下,BootROM头部可以指示PS直接从支持执行-in-place选项的Quad-SPI或NOR引导设备执行引导映像。在其他情况下,FSBL/User代码被复制到OCM存储器以供执行。
如果闪存设备中的BootROM头部无效,BootROM代码将搜索另一个头部。头部搜索会持续进行,直到找到有效的头部或搜索整个范围为止。BootROM头部搜索支持Quad-SPI、NAND和NOR引导模式。对于SD卡引导模式,只会读取一个头部。
1.2、JTAG Slave Boot
1.3、Boot and Configuration Subsections
1.4、Device Boot Flowchart
BootROM and Header Parameters