ZYNQ FPGA程序固化FLASH

一、 创建BOOT.bin

工具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文件

二、 将bit文件导入SDK

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文件加载自己的文件。

三、 QSPI-FLASH启动

从 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文件去引导下载。

ZYNQ7020 FPGA如何从Flash启动的详细步骤相关推荐

  1. 联想笔记本Ideapad(flex 2)进入BIOS设置U盘启动的详细步骤

    2019独角兽企业重金招聘Python工程师标准>>> (设置以ideapad S210进入BIOS设置U盘启动盘为例) 1.按下联想笔记本的电源键,看到联想图标的时候按住键盘左下角 ...

  2. python脚本自动运行失败_Linux下Python脚本自启动和定时启动的详细步骤

    一.Python开机自动运行 假如Python自启动脚本为 auto.py .那么用root权限编辑以下文件: sudo vim /etc/rc.local 如果没有 rc.local 请看 这篇文章 ...

  3. linux开机自启动python脚本_Linux下Python脚本自启动和定时启动的详细步骤

    一.Python开机自动运行 假如Python自启动脚本为 auto.py .那么用root权限编辑以下文件: sudo vim /etc/rc.local 如果没有 rc.local 请看 这篇文章 ...

  4. python程序开机自启动_Linux下Python脚本自启动和定时启动的详细步骤

    一.Python开机自动运行 假如Python自启动脚本为 auto.py .那么用root权限编辑以下文件: sudo vim /etc/rc.local 如果没有 rc.local 请看 这篇文章 ...

  5. 2246xt u盘开卡详细教程_联想y700-15笔记本如何使用bios设置u盘启动【详细步骤】...

    联想y700-15笔记本是一款2015年上市的大屏幕游戏笔记本电脑,这款电脑搭载了intel酷睿第六代处理器以及gtx960m独立显卡,让游戏玩家们能够更加顺畅运行游戏,那么这款联想y700-15笔记 ...

  6. docker安装启动nginx详细步骤

    1.随便启动一个nginx实例,只是为了复制出配置 如果没有对应的nginx版本,会自动去docker仓库下载 docker run -p 80:80 --name nginx -d nginx:1. ...

  7. 微软官方制作纯净版的U盘启动盘(详细步骤)

    文章目录: 1.前期准备:超过8GB的U盘并且是空的,后面会格式化的 2.如何使用微软官方工具制作win10启动盘 第一步:百度搜索栏中搜索下载win10,找到官网 第二步:点击打开,立即下载工具 第 ...

  8. lenovo L480 进入bios_梅捷主板如何在bios中设置u盘启动【详细步骤】

    梅捷是第一个台湾主机板品牌,从它的诞生至今也很久了,它能在市场上广泛得运行流通说明得到了用户的认可.不过对于梅捷主板 u盘启动 设置方法却有很多用户不知道怎么设置,这边就和大家介绍怎么设置梅捷主板u盘 ...

  9. 神舟Z7-SL7S3(蓝天P650RG/RE准系统)刷BIOS解决CPU的uncore功耗大于10W,修改启动Logo详细步骤

    前言 刷BIOS慎重,小白最好别搞了.为了这么点强迫症搞坏了,还要修理.如果搞坏了简易去B站UP主笔记本维修厮[手动滑稽],本教程作用是探讨和记录不负任何责任. BIOS和EC是搭配的最好一起刷,先E ...

  10. 石大师如何制作U盘启动盘 石大师制作U盘启动盘详细教程

    现在大家常用的重装系统方法就是U盘重装,小巧方便,操作简单,电脑小白也能轻松上手.那么下面小编就给大家介绍一下石大师制作U盘启动盘的详细教程.感兴趣的用户快来看看吧. 石大师系统重装最新版下载_石大师 ...

最新文章

  1. antlr.collections.AST.getLine()I问题的起因及解决
  2. 在c语言中log函数的作用,C++_在C语言中使用对数函数的方法,C语言log()函数:返回以e为底的 - phpStudy...
  3. javascript dom追加内容的例子
  4. 瀑布流第二种方式————基于ajax方式
  5. 贷款被拒,因为你的征信黑洞太多
  6. php与其它语言组合开发,PHP相对于其它语言有哪些魅力?
  7. Oralce定时任务实际应用
  8. bzoj 1597 [Usaco2008 Mar]土地购买——斜率优化dp
  9. SqlServer Windows 可更新订阅立即更新启用分布式事务协调器(MSDTC)
  10. AndroidStudio_android中实现对properties文件的读写操作_不把properties文件放在assets文件夹中_支持读写---Android原生开发工作笔记238
  11. about page
  12. smartsvn smartgit 安装 及其破解
  13. word给大括号公式加编号
  14. 去美国看展会1:办理护照和签证
  15. S5P4418裸机开发(一):相关工具准备
  16. 烤仔TVのCCW丨存储押金代付
  17. 匹配,为什么要“共轭”
  18. 1.函数的结构,调用,传参,形参,实参,args,kwargs,名称空间,高阶函数
  19. 十进制转换为二进制、原码、反码、补码、移码
  20. 微信小程序之多规格选择

热门文章

  1. 接受吧,这世界充满潜规则
  2. 190301每日一句
  3. Atitit alldiaryindex v1 t717 目录 1. Fix 1 2. Diary detail 1 2.1. Diary 1987---2016.12 1 2.2. Diary20
  4. Atitit. 提升开发效率与质量DSL ( 3) ----实现DSL的方式总结
  5. paip.环境设置 mybatis ibatis cfg 环境设置
  6. 金融破段子 | 如果早知赚钱概率只有8%,你会不会改变投资策略
  7. 骆天涯:gunicorn部署Flask服务
  8. “腾讯基因”讨论:为什么我常说做to C的人很难去做to B?
  9. (转)用纸笔解释比特币挖矿算法原理
  10. “电”亮数字生活,阿里云助力南方电网智能调度