ZYNQ 从NAND flash启动应用笔记

本文档主要用于ZYNQ从NAND flash启动说明,鉴于网上此类型资料较少,特作此说明。

至于zynq 的两步启动操作本文不在此说明详细可以阅读官方的相关文档和其余的网上的资料

 

工作主要分为两部分,一部分为在vivado部分的工作和SDK部分的工作,vivado主要是用来生成SDK工程需要使用的platform和FPGA的bit文件

SDK主要用来生成FSBL的.elf的工程,和生成需要下载进在FLASH的boot.bin 文件。

一。bin文件生成和FLASH下载

  1. 添加zynq的IPcore 生成platform和bit文件

通过点击creat block design弹出对话框之后,然后填入design name和文件夹位置,design name将会是后来的生成的platform的名称,

 

ZYNQ 从NAND flash启动应用笔记

点击ok之后会显示如下的界面,

然后通过点加号加入zynq7的Ipcore

具体如下两图所示

ZYNQ 从NAND flash启动应用笔记

ZYNQ 从NAND flash启动应用笔记

ZYNQ 从NAND flash启动应用笔记

通过点击ipcore的图形回弹出对话框来对ip进行设置,具体界面如下

ZYNQ 从NAND flash启动应用笔记

此处根据具体的系统在arm侧的管脚情况来进行设置,此处主要完成对于管脚的一个映射以及bank电压的选择,注意此处的电压需要与原理图的管脚电压选择相同,由于本说明是针对NANDflash启动的,此处最主要的是对于NANDflash的选择, 其余可以根据实际情况进行选择,当然也可不选,

ZYNQ 从NAND flash启动应用笔记

 

接下来是对于时钟的设置,系统默认的时钟是33M时钟,由于本系统采用的是相同的时钟系统硬件时钟, 因此此处不需要修改,但是如果不是的话那可能需要变更部分的设置,另外由于系统只是启动FPGA没有ARM侧的代码因此需要将FCLK_CLK0的勾去掉

ZYNQ 从NAND flash启动应用笔记

此外如果不需要通过FPGA部分传递时钟过来的话则还需要在PS-PL configuration里面将M AXI GP0 interface 的勾去掉,以及FCLK_RESET0_N

具体如图所示:

ZYNQ 从NAND flash启动应用笔记

另外就是DDR的选择,DDR对于NAND Flash是必须的,否则在SDK操作的时候会报错,无法进行flash的烧写工作。因为ARM不能直接对NAND flash直接一个地址一个地址地进行读写,只能整块整块地进行读写操作,因此如果要从NANDflash 启动则需要将flash中的bin文件先用DDR来读取,然后再来进行bin文件操作,此处的DDR操作需要注意的主要有两点,一个首先要勾选DDR,其次是需要勾选板卡所选的器件,另外还有总线位宽等,具体情况根据板卡的实际情况来进行选择。

ZYNQ 从NAND flash启动应用笔记

 

对于NAND flah启动还需要设置的另一个很重要的地方就是 SMC timing calculation,此处是NAND flash对具体的的读写时序调整参数,主要是调整读写的延迟时间,这里需要根据flash的数据手册来进行设置,手册给定的是最小的时延参数,此处应当设置的比手册中的大一些,另外就是此处的时延的依据应当是CS0 cycle 这才是关键,此参数是根据SMC 时钟频率和CS0 时延计算出来的,本系统使用的是镁光的MT29f2g08abbeahc的nand flash,具体设置成功的参数如下所示

ZYNQ 从NAND flash启动应用笔记

以下两表是手册中的具体时间参数

 

ZYNQ 从NAND flash启动应用笔记

ZYNQ 从NAND flash启动应用笔记

设置完成后点击ok确认然后再点击图中的run block automation,此步主要是为了生成相应的端口

ZYNQ 从NAND flash启动应用笔记

ZYNQ 从NAND flash启动应用笔记

此处的步骤主要是用来生成如图所示的interface port ,如果想要再次修改IPcore,想要添加部分的port可以通过右键该端口点击creat interface port

 

 

ZYNQ 从NAND flash启动应用笔记

此后再需要做的就是两步就是 creat output product 和creat HDL wrapper

具体操作如图所示

generate output product 会生成

creat HDL wrapper会生成顶层的文件,此时需要将原先的顶层模块添加进生成的模块内部。

ZYNQ 从NAND flash启动应用笔记

 

ZYNQ 从NAND flash启动应用笔记

 

然后保存生成bit文件

然后再点击file -> export hardware 

 

ZYNQ 从NAND flash启动应用笔记

 

ZYNQ 从NAND flash启动应用笔记

此时会在选定的文件下生成一个 hdf文件

然后再点击launch SDK

至此vivado部分的工作已经结束了

 

然后需要在SDK内部建立一个FSBL的工程编译后生成elf文件,并用此文件与FPGA的bit文件生成bin文件,

 

进入SDK之后新建Application project

ZYNQ 从NAND flash启动应用笔记

然后在新建窗口处填入project name 

由于此处是从vivado直接launch的,所以hardware platform直接就已经导入过来了

ZYNQ 从NAND flash启动应用笔记

 

如果想要更换一个platform (也即arm侧的管脚约束配置等组成的一个硬件的配置文件)可以通过new然后将此hardware platform的hdf文件导入进来,然后project name就是此platform的名称。

ZYNQ 从NAND flash启动应用笔记

 

其余各项选默认之后,选择新建一个zynq FSBL的工程

ZYNQ 从NAND flash启动应用笔记

finish之后则对工程进行build 生成elf文件

ZYNQ 从NAND flash启动应用笔记

然后就生成bin文件就行

 

ZYNQ 从NAND flash启动应用笔记

下图主要是生成需要烧写进入flash的bin文件此处默认添加了FSBL的elf文件,和fpga的bit文件,注意此处elf需要在前,且其数据类型为bootloader,手动添加需要注意,而bit文件的文件类型为data类型。

 

ZYNQ 从NAND flash启动应用笔记

生成boot.bin文件之后就可以烧写flash了

ZYNQ 从NAND flash启动应用笔记

烧写的过程需要填入image file, 此文件在sdk的工程目录下,以及需要FSBL的elf文件,此文件是本工程的FSBL的生成的,然后就可以下载了,下载完成后Zynq的配置拨码开关需要从jtag模式变成nand模式就ok

ZYNQ 从NAND flash启动应用笔记