1、概述
\quad
当完成系统复位后开始执行配置程序。CPU0执行BootROM程序,CPU1休眠等待CPU0唤醒。在执行BootROM程序时DAP和TAP JTAG控制器禁用。DDR控制器及其它外设不会被BootROM程序初始化。
\quad PL的启动和初始化序列可以与PS启动同时进行,也可以在启动之后进行。如果BootROM需要启动PL,然后在BootROM执行的早期,BootROM将写入devcfg.CTRL [PCFG_PROG_B]位,在开始执行BootROM之前一直等待devcfg.STATUS[PCFG_INIT]状态位的声明。
\quad 为了PCAP授权和镜像解码,PL端需要供电。BootROM在访问PL端资源之前设置了90s超时定时器测试PL状态。在引导过程中,PROGRAM_B设备引脚必须保持为高。在引导过程中将PROGRAM_B设备引脚保持在低位会导致设备锁定事件。
\quad 在等待PL启动阶段,写PL寄存器,清除PL配置内存,重新初始化PL配置内存,定时监测PL状态寄存器,如果在90s内完成了PL启动初始化就继续执行 BootROM程序,否则将系统锁存在安全模式(不会提供错误代码)。
2、BootROM流程图
3、BootROM Header搜索
\quad
BootROM读取BootROM Header并且执行两次校验验证header是否正确,如果不正确就将地址增加32KB重复读取校验。BootROM Header中可包含寄存器初始化参数用于优化FSBL/User code拷贝到OCM的性能,或者路由代码到PL的解密单元中。
4、APU初始化
\quad
BootROM配置APU和MIO多路复用器来支持引导过程。每个引导模式的MIO引脚状态都在表格中描述。BootROM使用CPU 0来执行ROM代码。CPU 1执行WFE(wait for enable)指令。BootROM配置MMU和其他系统资源,以满足BootROM执行的需要。
5、BootROM后APU和OCM状态
1)MMU,Icache,Dcache,L2 cache禁用
2)两个处理器处于监管状态
3)ROM代码不可访问
4)OCM内存的192KB从地址0x0000_0000开始可以被访问,OCM的高64KB从地址0Xffff_0000开始可以被访问
5)如果没有发生错误CPU0将执行引导镜像的阶段1
6)CPU1处在WFE状态直到执行地址段0xffff_fe00到0xffff_fff0的代码
6、BootROM阶段内存映射