CH05 FPGA设计Verilog基础笔记(五)

 

FPGA程序的固化和下载

1、  概述

在上一例点亮流水灯的基础上,进行改动并将此程序固化到FLASH或SD卡中,实现上电就可启动流水灯程序。

2、  固化

上一例通过JTAG先下载bit流文件,在下载elf文件,最后点击Run As来运行程序。JTAG的方法是通过TCL脚本来初始化PS,然后用JTAG 收发信息,用于在线调试。但是这样一断电,程序就会消失,掉电不保存。

如果需要板卡中程序掉电不丢失,则需要对程序进行固化。ZYNQ7000 SOC 芯片可以从FLASH启动,也可以从SD卡中启动。

SD固化:将镜像文件拷贝到SD卡中,设置拨码开关,使系统从SD模式启动。那么每次断电后,系统都会从SD启动。

QSPI FLASH固化:设置拨码开关,将镜像文件烧录到FLASH中,使系统从QSPI-FLASH模式启动,那么每次断电重启后,系统都会从FLASH启动。

3、  固化的流程

Step1:Create a Vivado Project ---> Step 2:Create the Hardware System using IP Integrator

---> Step 3:Export the Design to the SDK ---> Step 4:Create the Boot Images and Test

    ---> Step 5:Prepare for the Multi-Applications Boot ---> Step 6:Create the SD Card Image and Test

---> Step 7:Create the QSPI Application and Image ---> Step 8:Test the QSPI Multi-Applications

4、  固化需要的文件

1) FSBL.elf

2) .bit

3) .elf 

以上三个文件最终可以得到BOOT.bin

5、  ZYNQ从SD卡的启动过程

zynq和大多数arm启动过程一样,启动过程也分为3个阶段,这三个阶段分别称之为阶段0、阶段1、阶段2。

阶段0:即传统的BootROM过程。ZYNQ芯片ROM里面固化了一段不可修改的程序,只要ZYNQ一上电,这段程序就会执行。它将对ZYNQ的NAND、NOR、SD等基本外设控制器进行初始化。把SD卡这类易失性存储器初始化后,就会把其中的程序拷贝到ZYNQ的OCM(on-chip memory)。这个被拷贝到片上RAM执行的程序就是我们今天要制作的---BOOT.bin。

阶段1:BOOT.bin加载到OCM上开始执行。BOOT.bin由fsbl.elf+该工程.bit+该工程.elf构成。阶段1要做的就是:首先配置PS部分,PS完成初始化后,回去配置PL部分,最后去执行加载阶段2的代码。

阶段2:这一阶段是可选的,主要是为了完成Linux系统启动过程。

6、  BOOT.bin制作过程

首先创建IP核并进行配置。

 

配置以下几个部分:

 

1)MIO QSPI FLASH这里选择默认,MIO1-6与原理图相对应

2)IO=》SD0->CD MIO47(原理图对应)

   UART1 MIO48-49(原理图对应)

bank0 选择3.3V,bank1选择1.8v(由由图可知,bank0->QSPI 、QMOD;

 bank1->UART、Ethernet、USB_OTG、SD_CARD、Push Buttons)

3)QSPI Clock 设置为125Mhz

   DDR memory part 我的板子是ZYNQ 7010A所以我这选择 MT41K256M 16 RE-125       

   最后点击OK就配置完成IP核了。

1)  点击配置好的IP核,将其生成顶层文件

将顶层文件中的模块接口和接口代码复制到run_led.v文件中。然后生成bit文件。

将bit文件导入SDK中,运行SDK文件。在SDK中创建zynq.fsbl文件。

然后Create Boot Image产生Boot.bin文件。

posted @ 2019-12-04 19:06  烟火流沙  阅读(430)  评论(0编辑  收藏  举报