目录
1. 工程搭建
平台采用AX7Z100开发平台。
1) 首先搭建好zynq框架,有一个完整的工程。
2)要固化程序必须使能 QSPI 或SD卡。 由于开发板上是由两颗QSPI flash 组成8位的QSPI,因此这里选择Dual Quad SPI (8 bit ),选择feedback 连接到MIO8 。
3) 添加 SD0 控制器,使用MIO40-45 ,使用 TF 卡接口
4) 保存设计,编译生成 bit文件 ,再次导出硬件
2. 生成FSBL
FSBL是一个二级引导程序,完成MIO的分配、DDR控制器初始化、SD、QSPI控制器初始化,配置FPGA、然后加载用户程序。
1) 启动SDK。hw_platform选择最新的那个。
2)新建一个名为fsbl的APP,特别注意硬件平台选择最新的那个,可以把以前的都删除了。
3) 模板选择zynq fsbl
4) 添加调试宏定义FSBL_DEBUG_INFO,可以在启动输出FSBL的一些状态信息,有利于调试,但会导致启动时间变长。
5) SDK 默认会自动编译,生成fsbl.elf文件
3. 创建BOOT文件
1)选择fsbl工程,右键选择 create boot image
2)弹出的窗口中可以看到生成的BIF文件路径,BIF文件是生成BOOT文件的配置文件,bif文件和bin文件放在同一个根目录下;还有生成BOOT.bin文件路径,BOOT.bin文件是我们需要的启动文件,可以放到SD卡启动,也可以烧写到QSPI flash 。(有次固化的时候,流程都正确的,但是固化代码最后都提示失败,后来换做加载MCS文件固化成功。分析原因可能是BIN文件比MSC文件小,可能一些东西被处理掉,对于复杂的工程来说,如果对应的FLASH SD 容量够大,可以选择MSC 文件加载)
3)在boot image partitions 列表中有要合成的文件,第一个文件一定是bootloader 文件,就是上面生成的fsbl.elf文件,第二个文件是FPGA配置文件,现在点击ADD添加测试程序vdma_hdmi.elf
4) 点击create image 生成
注意下面3个文件的路径,不要更改,会出错的。第一个就是FSBL 启动文件,然后是PL 的bit,最后是PS 的ELF。
如果记不住上面的顺序,可以到debug界面,也是先初始化系统(FSBL),program fpga (bit),run ps7 (elf)
5) 在生成的目录下可以找到BOOT.bin文件, 或者BOOT.mcs文件
4. SD卡启动测试
1)格式化SD卡,只能格式化为FAT32格式,其他格式无法启动
2) 放入BIN文件,在根目录下
3)SD 卡插入开发板的SD卡插槽
4)启动模式调整为SD卡启动
5.QSPI启动测试
1)在SDK 菜单XILINX--program flash
2) hardware platform 选择最新的,image file 文件选择要烧写的bin/msc,FSBL file选择生成的fsbl.elf,flash type 根据硬件选择,这里选择qspi_dual_parallel.
3) 点击program 等待烧写完成
4)设置启动模式为QSPI,再次启动
6.在vivado 下烧写QSPI
1)vivado 下 hardware manger 下选择器件 ,右键add configuration memory device
2) 选择flash型号
3)右键选择编程文件
4) 选择要烧写的文件和fsbl文件,就可以烧写了。如果烧写时不是jtag启动模式,软件会给出一个警告,所以建议烧写QSPI的时候设置到JTAG启动模式