ZYNQ固化程序笔记
读《ZYNQ那些事儿-SDK实验篇》,去掉具体操作,提炼流程形成此文。
对于ZYNQ来说,必须要有PS端的配合才能固化程序,即使程序只包含PL端的逻辑。ZYNQ的启动由ARM主导,包括FPGA程序的加载,ZYNQ启动一般至少两个步骤:Stage0,Stage1.
- stage0:上电复位或热复位之后,处理器首先执行BootRom里的的代码,这是最初的启动设置。BootRom中的代码用户不可更改,其中包含着NAND,NOR,Quad-SPI,SD和PCAP的驱动;另外把stage1的代码搬到OCM(On-Chip Memory)中,就是FSBL代码(First Stage Boot Loader)
- stage1:这是最重要的一步,当BootRom搬运到OCM后,开始执行FSBL代码。
- stage2:second stage bootloader是可选项,一般在跑系统的情况下运行。
FSBL主要作用:
- 初始化PS端配置,这些配置就是在Vivado中队ZYNQ核的配置。包括初始化DDR,MIO,SLCR寄存器。余姚执行ps7_init.c和ps7_init.h
- 如果有PL端程序,加载PL端的bitstream
- 加载second stage bootloader 或 bare-metal应用程序到DDR存储器
- 交接给second stage bootloader或bare-metal应用程序
设置ZYNQ固化程序的流程:
1生成FSBL
2创建BOOT文件
3按某种方式启动(启动方式:SD卡启动、QSPI启动)
以上具体步骤参照ZYNQ那些事儿-SDK实验篇第一章p42-p57