赞
踩
我们前面的例程都是在 SDK 开发环境中用 JTAG 直接下载程序运行,如果开发板断电,程序就会丢失,如何让程序能够在开发板断电后再上电能重新启动,这就需要用到应用程序的固化。 ZYNQ7000 SOC 芯片可以从 FLASH 启动,也可以从 SD 卡里启动, 本文给大家介绍程序的 FLASH 和/或者 SD 卡启动的方法。
前面我们也介绍过, Zynq7000 SOC 芯片上电后,运行的是 ARM 系统(PS)。然后再通过 ARM 系统软件部分加载 FPGA 的比特流文件.bit 至 FPGA(PL),启动 FPGA 的逻辑功能。 下面给大家介绍一下 ZYNQ 系统的启动流程:
开发板的启动分两个阶段,第一阶段是 BOOT ROM,第二阶段是 FSBL (First Stage Bootloader)。经过两个阶段,应用程序开始运行。
第一阶段 (BOOT ROM)
1). AX7010/AX7020 开发板上电后,Zynq7000 SOC 会首先执行片内 Boot ROM 代码, Boot ROM 代码读取 Boot mode 寄存器会决定是哪一种启动方式(SD card/QSPI Flash/JTAG)。
2). 确定好哪种启动方式后, Boot ROM 从相应的启动设备(SD Card/QSPI Flash)加载 First
Stage Bootloader (FSBL) 到 On Chip Memory(OCM) RAM,开始将执行权交付给 FSBL。
第二阶段 FSBL (First Stage Bootloader)
FSBL 开始执行, 后面我们会介绍了如何利用 SDK 工具一步步生成 FSBL 代码和可执行文
件,结合代码可知 FSBL 主要做了如下工作:
1).初始化 CPU,初始化串口;
2). Processor System (PS) 一些控刢器的初始化,如 MIO, PLL, CLK and DDR;
3). 禁止 L1 Data Cache;
4). 注册 ARM 中断向量;
5). 通过 Boot mode 寄存器,判断是哪种启动方式
a). QSPI Flash 启动方式:
初始化 QSPI Flash 控制器;
从 Flash 拷贝 system.bit 到 FPGA (如果 Flash 中存有 system.bit);
从 QSPI Flash 拷贝应用程序的代码到 DDR3;
调转到应用程序执行;
b). SD Card 启动方式:
初始化 SD 控刢器;
从 SD Card 拷贝 system.bit 到 FPGA (如果 BOOT.BIN 中存有
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。