FPGA学习记录(二)vivado固化程序最全完整版

我这里学习记录不是系统循序渐进的记录,而是我自己在使用过程中觉得需要记录的才写一下,防止自己遗忘

我们都知道fpga跟单片机不一样,是掉电之后就不能自动储存上一次烧录的程序,在电赛、多块板卡但是缺少烧写器等情况下,我们就需要烧录程序,现在我演示一下整个过程

生成这个之后我们双击编辑

在 Zynq Block Design 页面,显示了 Zynq 处理系统(PS)的各种可配置块,其中灰色部分是固定的,绿色部分是可配置的,按工程实际需求配置。

PS-PL Configuration 页面能够配置 PS-PL 接口,包括 AXI、HP 和 ACP 总线接口。

Peripheral IO Pins 页面可以为不同的 I/O 外设选择 MIO/EMIO 配置。

MIO Configuration 页面可以为不同的 I/O 外设具体配置 MIO/EMIO。

Clock Configuration 页面用来配置 PS 输入时钟、外设时钟,以及 DDR 和 CPU 时钟等。

DDR Configuration 页面用于设置 DDR 控制器配置信息。

SMC Timing Calculation 页面用于执行 SMC 时序计算。

Interrupts 页面用于配置 PS-PL 中断端口。

这里选QSPI和SD卡使能是为了之后介绍两种固化方式,选uart0的目的是为了在sdk中选择helloworld的模板,大家在配置使能的时候一定要选择io口,不然待会确认模块了之后会发现有引脚悬空了,我本人在第一次配置的时候就是遇到了很多问题,建议大家第一次的时候严格跟着步骤来

在这里把勾给取消掉,因为我们不需要ps和pl之间的交互

这个勾也取消掉,然后选择ddr型号,这里应该是与zynq芯片兼容的型号,XC7Z020 的核心板选择 MT41J256M16RE-125,XC7Z010 的核心板选择 MT41J128M16HA-125

随后点击OK,他会生成这样的模块,注意只有两个脚,千万不能多了,多了应该最后生成的比特流文件都不对,确认正确之后依次从上到下点击箭头所指的按钮

连上之后说明正确,且没有悬空的脚

然后生成顶层hdl文件

注意这里一定要点global,博主亲测不点之后就是错的

接着点这个,选择auto-update,这样你之后修改程序重新生成比特流文件之后这个hdl文件也会自动更新

接着我们需要将生成的那个wrapper.v文件变成顶层文件,首先我们需要在这里添加本来自己顶层模块定义好的输入输出,然后将之前的顶层模块例化到这里,让这个文件变成顶层模块

然后就按照正常步骤生成比特流文件,注意,现在生成的比特流文件是wrapper.bit,大家可以直接烧录这个比特流文件来验证顶层模块的改动是否正确,生成好比特流文件我们导出硬件

要勾选include bitstream,然后vivado会帮你生成hdf文件

导出之后我们点launch sdk,注意vivado的版本好像2019过后就没有sdk了,建议大家都使用2018的版本

SDK 打开后,主页面会显示硬件描述文件 system.hdf 的内容。system.hdf 标签页显示了整个 PS 系统的地址映射信息。

然后我们点击左上角的File-New-Application project,新建一个sdk应用过程

然后我们选择这里的hello world模版,这也是为什么上面要选那个uart,不然好像会报错的,这里选hello world的原因是我们需要先建一个应用才能配置fsbl工程,zynq内部的BootROM存储有一段在CPU复位后固定执行的代码。称为stage-0启动代码。这段代码用来配置一个ARM CPU和一些必要外设,从而能从一个启动设备中获取FSBL(first stage boot loader)执行,他是我们可以固化程序的关键

然后我们看到这个bsp文件,右击之后选择下面的board support package settings

勾选之后点确定,然后我们点击左上角的File-New-Application project,新建fsbl工程

sdk会自动编译,生成fsbl.elf文件,接下来我们就可以使用 FSBL、BIT 文件和 C 应用程序来创建启动镜像,点击xilinx-creat boot image

添加一下boot.bin镜像的输出路径,boot image文件夹需要自建

然后添加fsbl文件

然后添加比特流文件,文件添加的顺序千万不能错!

最后添加软件文件

添加完之后点creat image,等待一下就生成好镜像了

下面介绍sd卡和QSPI两种固化方式,大家的开发板上应该否有个BOOT CFG 的开关,红色的,上面有丝印告诉你开关分别怎么拨就是什么样的烧录模式,注意到有sd和QSPI的模式,由于我现在手头没有sd卡,我就简单说一下sd卡的烧录方式,首先我们把sd卡选择fat32格式化之后把boot.bin文件导入,然后插在卡槽里,把开关拨到sd模式上电就可以了

然后说一下QSPI的烧录方式,点击xilinx-program flash,导入boot.bin和fsbl.elf文件,把开发板的烧录模式调整成jtag,然后插上烧写器和电源,把程序烧录到flash里面,这个过程需要一分钟左右

烧录成功后一定要断电,然后把烧录模式调整成QSPI,再上电,上电之后程序就可以自动烧录了。

 

  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值