Xilinx Zynq-7000系列芯片 boot介绍

时间:2024-05-31 07:17:26

1,启动流程

         zynq7000系列的启动流程如下图所示,zynq的启动需要从ps端开始,因此zynq可以只使用ps端,但无法只使用pl端。启动过程分为三步:stage0,BootRom;stage1,FSBL/User code;stage2,U-boot/System/App。

        stage0:ps端电源稳定后,ps端会复位所有寄存器、采样boot引脚、初始化配置时钟,然后执行BootRom(对用户不可见,出厂即固化在128KB的ROM中,初始地址为0。zynq7000的OCM分为256KB的RAM和128KB的ROM。如果为双核,则固定在CPU0执行,CPU1执行WFE指令,处于等待状态。);而非上电复位则不会造成硬件的重采样。BootRom的主要功能就是根据采样的启动引脚,从相应启动设备搜索BootRom Header,如果没有知道有效的header,BootRom跳转32KB地址,继续查找,直到遍历整个存储(对于Qspi flash,存储空间为16MB),并将后续加载流程交给FSBL。另外,BootRom也会将TAP与DAP口级联,并禁止ROM的访问。

        stage1:FSBL主要功能是初始化ps端外设、时钟等;然后加载bit文件初始化PL侧逻辑(start-up、initialization、configuration、enable);最后加载用户程序的elf文件到DRAM或者OCM中,并执行。

        stage2:如果带操作系统,会继续加载U-boot,并由U-boot加载操作系统内核、设备树、根目录等文件。

Xilinx Zynq-7000系列芯片 boot介绍

2,MultiBoot

        Multiboot的启动过程如下图所示,大体就是BootRom通过devcfg.MULTIBOOT_ADDR*32KB作为偏移,查询有效的heade;通过写slcr.PSS_RST_CTRL寄存器产生软复位,重新进行查询过程。

Xilinx Zynq-7000系列芯片 boot介绍