ZYNQ FPGA程序固化FLASH
工具vivado 2017.4
1创建工程。包括创建工程,编写程序,添加约束。
2创建一个BD文件。单击 Create Block Design,命名为 system 之后单击 OK。
3添加IP。单击图中+号
4搜索单词ZYNQ选择ZYNQ7 Processing System,然后双击添加ZYNQ IP。
5修改MIO接口配置
(1)QSPI FLASH接口
(2)配置SDIO接口,也就是TF卡接口
勾选SD0(从SD卡中启动)和CD(原理图不同,CD脚对应IO不同)。
(3)配置串口
6修改时钟
(1)CPU和DDR根据开发板的时钟来设置,一般CPU时钟为33.333333MHz。
(2)ZYNQ的主频设置为默认的667MHz,QSPI时钟设置为125MHz(否则无法加载FLASH)。
7修改内存型号(PS内存配置)
根据所用开发板上DDR芯片更改配置。
8从SD卡启动不用GP接口,所以去掉默认的GP接口。(没用到GP接口,去掉GP接口可以在生成IP后不用添加连线)
9点击OK完成配置
10点击 Run Block Automation。(点击后有弹窗直接OK,产生一些连线)
完成后可右击,选择Regenerate Layout,将布局优化一下。
11修改.v程序。增加 ZYNQ IP 接口部分定义实现.v程序调用 BD 模块。(通过软件自动生成一些信号,然后从system_wrapper.v中复制到.v程序中,方便快捷)
(1)首先,建一个顶层文件。(如有报错,根据提示信息修改)
(2)然后,利用自动产生的 system_wrapper.v 中对 BD 调用的接口代码复制到.v 中,这样,.v 就能调用 BD 文件。
其中的inout是FPGA自带的,不需要约束。
(3)保存,可以发现在.V文件下生成两个文件。
(4)保存后可删除system_wrapper文件。
12生成bit文件
1在已生成bit文件的基础上,导出硬件。(File->Export->Export Hardware)
勾选 Include bitstream。
2 File->Launch SDK 加载到 SDK,单击 OK
3 导出完成后如下图所示
4在SDK中选择 File->New->Application Projec
5工程命名为 HelloWorld,然后单击 NEXT,选择自带的 Helloworld 程序做测试,单击 Finish。
6新建的HelloWorld工程
7新建一个应用工程
8填写工程名 FSBL,点击 Next,工程类型选择 Zynq FSBL。
9选中 helloworld 工程(要做固化的工程),然后右单击,选择 Creat Boot Image。
10在新窗口中,一共出现三个文件,分别是 FSBL.elf、.bit、.elf 文件,如图所示。制作镜像文件需要这三个 文件。 直接单击 Create Image 即可完成 Boot.bin 的创建,此文件可作为 SD 卡启动文件和 SPI 启动文件
11完成后,可以看到在 helloworld 工程(要做固化的工程)的文件夹中出现 bootimage 文件夹,展开后可以看到生成 的 BOOT.bin 文件。这个 BOOT.bin 文件用于 SD 或 QSPI 固化。
12 FSBL针对vivado2017.4需做的改动
在FSBL——src——main.c
13 修改系统的时钟(用于配置JTAG的速度)
新建环境变量:计算机→属性→高级系统设置→高级→环境变量→新建系统变量
变量名:XIL_CSE_ZYNQ_UBOOT_QSPI_FREQ_HZ
变量值:10000000
修改环境变量后要重启电脑。
14烧录到FLASH
15注意的问题
(1)用vivado2017.4下载 FSBL文件需要修改
(2)系统的时钟需要修该,重启电脑。
(3)改变环境变量后要重启电脑。
(4)重启电脑后开发板的插头接口都重新插拔一下。
(5)米联客提供FSBL文件,可用他的FSBL文件加载自己的文件。
从 VIVADO 2017.3 版本开始,Xilinx 官方为了使 Zynq-7000 和 Zynq UltraScale +实现流程相同,在 QSPI FLASH 使用上做了变化,即 Zynq-7000 编程 flash 需要“指定的 fsbl”。这个 fsbl 用于初始化系统(主要是运行 ps7_init() 函数)。XILINX 官网中 Xilinx Answer 70548 和 Xilinx Answer 70148 提供了 VIVADIO 2017.3 版本 QSPI FLASH 下 载方法。
注意:如果不修改引导用的 fsbl,下载 uboot.bin 到 FLASH 会失败,以下就是Vivado17.4下载QSPI-FLASH 的具体办法。
1新建环境变量
计算机→属性→高级系统设置→高级→环境变量→新建系统变量
变量名:XIL_CSE_ZYNQ_UBOOT_QSPI_FREQ_HZ(米联客教程中取的,也可以自己取)。系统的时钟,用于配置JTAG的速度。
变量值:10000000
注意,修改环境变量后要重启电脑。
2生成加载 QSPI FLASH 的 fsbl 文件
新建一个新的 FSBL 文件,命名为 zynq_fsbl。File→New→Application Project,输入 zynq_fsbl,点击 Next。选择 Zynq FSBL,单击 Finish。
3打开FSBL的main.c文件,修改如图,修改后保存编译。
4下载BOOT.bin到FLASH,用fsbl文件去引导下载。