今天小编要和大家分享的是嵌入式技术相关信息,接下来我将从详解zynq的启动步骤,9. host base deviceid lock csr寄存器,同xilinx srio ip. 1.这几个方面来介绍。

嵌入式技术相关技术文章详解zynq的启动步骤9. host base deviceid lock csr寄存器,同xilinx srio ip. 1.

嵌入式技术相关技术文章详解zynq的启动步骤

本文主要介绍zynq启动过程,主要包括BootROM和FSBL等的执行过程。

硬件启动过程

1. 重新上电或POR复位后进行硬件启动过程

2. 扫描“启动引脚”设置,并存入只读寄存器slcr.BOOT_MODE中

3. 若使能pll,则等到pll输出时钟;若旁路pll,则直接使用ps_clk时钟

更详细硬件启动过程可以参考下图

详解zynq的启动步骤

BootROM

BootROM在POR复位后经过硬件启动后自动运行,也可在非POR复位后直接运行(不经过硬件启动),其内容固化在内部ROM中,不能修改,主要初始化MMU和一些系统资源(以使其满足BootROM执行的要求)以及加载FSBL程序段等。BootROM在CPU 0执行,而CPU 1执行WFE指令

主要过程如下:

1. 硬件启动后BootROM将初始化MMU、NAND、NOR、QSPI、SD和PCAP等基本外设

2. 判断启动设备(决定于硬件启动过程时扫描的“启动模式”引脚,即寄存器slcr.BOOT_MODE)并搜索boot镜像头信息,各启动模式搜索范围:

       ① Quad-SPI,头16 MB空间搜索

       ② NAND,头128MB空间搜索

       ③ NOR,头32MB

       ④ SD卡中只加载一次,不会搜索

3. BootROM会根据启动模式配置MIO,还会根据读取的boot镜像头信息的“寄存器初始化参数”部分配置时间优化寄存器

4. 从指定启动设备中加载SFBL到OCM(加载时也会读取头部信息确定加密状态,文件长度等,若加密则还需解密后加载到OCM,BootROM头信息都不会加密),另外还支持直接在QSPI或NOR中执行(从头部信息中文件长度为0时,这时就不用加载到OCM了)

5. 跳转到SFBL中执行,BootROM关闭

其它说明:

•  如果已经为加密模式,经过非POR复位后,读取BootROM头信息检测到一个非加密的boot,系统将会被锁定

•  如果检测到BootROM中有错误,系统也会被锁定

•  如果为加密模式则需要等待PL上电才能继续加载,因为解密验证模块(AES and HMAC)在PL部分;而无论时加密模式还是非加密模式再配置.bit文件时都要等待PL部分准备好(通过检查寄存器devcfg.STATUS