ZYNQ 简述及启动流程
ZYNQ概述:
ZYNQ是一款ARM+FPGA集一身的SOC,其中ARM 包含两个Cortex A9核,支持多数通用接口,CPU频率最高支持1G Hz,每个CPU拥有独立的32KB L1数据高速缓存和指令高速缓存,在多处理配置中APU使两个CPU共享512KB的L2高速数据缓存和指令高速缓存,芯片GPIO总数118个,PS 54个,PS到PL有64个,下图是详细的引脚分布。
PS与PL之间可通过AXI总线交互,其中有AXI HP 与AXI GP两种,不同的在于HP是高速的,GP是低速的,支持以下几种类型的AXI接口:
系统中断:
PS的中断结构如上,其中包括CPU的私有中断以及软中断SGI和共享中断SPI,看门狗中断等。
其中PS与PL之间的中断如下:
启动方式:
ZYNQ支持QSPI、NOR、NAND、SD等启动方式,由MIO[5:3]决定,MIO[2]选择JTAG模式,启动分BootROM阶段、FSBL阶段、SSBL阶段,如下:
Stage 0 (BootROM: BootROM Header):
BootROM是固化在芯片中的一小部分程序,它的使命就是根据MIO配置的启动方式,去对应的存储设备上读取Stage 1需要的启动镜像到OCM(On Chip Memory),能读取这些存储设备自然说明该阶段还包括对这些存储设备对应接口的初始化,接着进入下一阶段。
Stage 1 (FSBL / User code):
First Stage Boot Loader,这一阶段完成PS的初始化、加载PL的bit流文件完成PL的配置、加载Stage 2 (U-Boot / System / Application)相关程序。
Stage 2 (U-Boot / System / Application):
这一阶段可以加载Uboot也可以加载其他裸机程序,如果加载裸机程序,那么这一阶段运行裸机程序后即结束,如果加载Uboot这运行执行Uboot进行系统的引导,直到最后系统运行。
到此整个启动流程就分析完毕了,更多详细信息参见赛灵思官方芯片手册UG585