ZYNQ启动流程详解:FPGA与ARM结合的引导机制

需积分: 50 56 下载量 112 浏览量 更新于2024-09-09 2 收藏 736KB PDF 举报
本文档深入解析了Xilinx Zynq 7000平台的启动过程,特别是针对嵌入式项目的实际应用。Zynq 7000是一个结合了FPGA和A9双核处理器的可扩展处理平台,其独特的启动流程不同于传统的FPGA,而是借鉴了ARM处理器的模式。 在Zynq 7000上电后,首先执行的是内置的BootROM,它负责进行Stage 0 Boot,即执行片内的固件。BootROM的主要任务是初始化处理器和一些关键外设,以便后续加载First Stage Bootloader (FSBL)。选择启动设备是通过特定的MIO引脚实现的,不同设备对应不同的地址范围,BootROM会根据这些引脚的状态确定从哪个设备加载FSBL。 FSBL作为启动流程的关键环节,拥有更大的内存访问权限,它可以利用OCM的256KB空间。Xilinx提供了标准的FSBL代码,通常情况下可以直接使用,但开发者可以根据需求对其进行定制。FSBL的主要职责包括: 1. 继续使用Xilinx Platform Services (XPS)的代码,对片上系统(PS)进行更全面的初始化,包括设置DDR控制器、PLL、时钟和MIO等。 2. 将设计的位流(bitstream)写入片内FPGA,这是配置FPGA的过程,可以稍后进行,但一般在启动早期完成。 3. 将后续的启动引导程序,如Second Stage Bootloader (SSBL,如U-Boot) 或者裸机程序,复制到内存中,确保系统进入下一阶段的准备。 4. 最后,FSBL会将控制权转交给SSBL,让其接管系统的进一步运行。 FSBL文件本身是专为Zynq 7000设计的一种低级引导程序,它负责基础硬件配置和必要的软件加载,为后续的系统启动奠定了坚实的基础。对于开发人员来说,理解和掌握这个启动过程至关重要,因为它直接影响到系统的可靠性和性能。