本文主要介绍zynq启动过程,主要包括BootROM和FSBL等的执行过程。
硬件启动过程
- 重新上电或POR复位后进行硬件启动过程
- 扫描“启动引脚”设置,并存入只读寄存器slcr.BOOT_MODE中
- 若使能pll,则等到pll输出时钟;若旁路pll,则直接使用ps_clk时钟
更详细硬件启动过程可以参考下图
BootROM
BootROM在POR复位后经过硬件启动后自动运行,也可在非POR复位后直接运行(不经过硬件启动),其内容固化在内部ROM中,不能修改,主要初始化MMU和一些系统资源(以使其满足BootROM执行的要求)以及加载FSBL程序段等。BootROM在CPU 0执行,而CPU 1执行WFE指令
主要过程如下:
- 硬件启动后BootROM将初始化MMU、NAND、NOR、QSPI、SD和PCAP等基本外设
- 判断启动设备(决定于硬件启动过程时扫描的“启动模式”引脚,即寄存器slcr.BOOT_MODE)并搜索boot镜像头信息,各启动模式搜索范围:
- Quad-SPI,头16 MB空间搜索
- NAND,头128MB空间搜索
- NOR,头32MB
- SD卡中只加载一次,不会搜索
- BootROM会根据启动模式配置MIO,还会