ZYNQ的启动过程

配置Zynq-7000系列可扩展器件需要多个步骤,最少要2个阶段,通常需要3个阶段,如下:

Stage0:称为BootROM,这一阶段控制最初的器件启动,BootROM是不可改动的可执行代码,处理器在上电复位和热重启之后执行。(热重启即通过软件重新启动电脑,而不是强制重新开机。指电脑从Windows操作软件的”开始”处点击”重新启动”按正常程序关毕电脑,这样会尽量避免对电脑的软、硬件造成的损坏。)

Stage1:通常称为第一阶段引导程序(First Stage Boot Loader,FSBL),它可以是任何用户可控的代码。

Stage2:该阶段通常开始执行用户所设计的处理系统,但是它也可以是第二阶段引导程序(Second Stage Boot Loader,SSBL)。这一阶段完全在用户的控制之下,本章并不予以详述。请参考UG821:《Zynq-7000 EPPSoftware Developers Guide》了解FSBL和Stage 2 images。

第一阶段引导程序(FSBL)在启动后开始。它由BootROM加载到OCM(On Chip Memory)或者在BootROM header所指明的加密位置执行。

FSBL负责:

利用XPS提供的PS配置数据进行初始化。

将比特流(bitstream)下载到PL。将第二阶段引导程序(SSBL)或者是“裸奔”应用代码加载到内存。

开始执行SSBL或是“裸奔”应用程序。

查看SDK提供的FSBL代码可以了解FSBL如何初始化CPU和FSBL所用到的外设,以及它如何使用一个简单的C run-time library。

Zynq PS 配置

利用Zynq配置UI,XPS生成MIO和SLCR寄存器的初始化代码。这些文件在XPS工程文件夹下:

Ps7_init.c和ps7_init.h,用于初始化CLKDDRMIO。Ps7_init.tcl完成的初始化和ps7_init.c代码完成的初始化是相同的。

Ps7_init.tcl文件,可以用来初始化CLK,DDR和MIO。它所完成的初始化和ps7_init.c代码完成的初始化是相同的。

注意:当使用XMD调试应用程序的时候tcl文件是很有用的。例如,你可以执行Ps7_init.tcl文件然后将应用程序加载到DDR中并调试。在这种情况下,就不需要进行FSBL的全过程。

Ps7_init.html,描述了初始化数据。

重要:在将来的版本中,可以改变PS初始化数据的位置和形式。

注意:XPS保持PL比特流和这些初始化数据的同步。不建议手动更改这些设置。

FSBL阶段不仅调用了pkilllo前辈提到的BSP提供的ARM启动代码,而且使用ps7_init.c中的代码对设备进行了初始化工作。

你可能感兴趣的:(zynq)