ZYNQ Bare Metal裸机程序固化:烧录程序进入QSPI-Flash

Vivado + Xilinx SDK版本 = 2019.1。

由于ZYNQ器件内部含有ARM子系统(PS), 所以在启动时,FPGA(PL)的配置需要在ARM子系统启动后进行:

同时, PS对PL的配置是通过专用配置接口PCAP(Processor Configuration Access Port)实现的:

所以,ZYNQ器件若非从JTAG启动,就需要将FPGA的.bit配置文件和ARM的.elf镜像文件全部整合进Boot Image里面,然后进行烧录。

说明一下利用JTAG将ZYNQ固件/程序烧录到QSPI中的操作步骤。

一、在Vivado环境中启用外接QSPI Flash接口控制器。

使能QSPI控制器和专用MIO管脚:

确认QSPI控制器与实际器件的参数相互兼容,注意数据线宽度:

 

二、在Vivado中生成Bitstream,并更新.bit配置文件和.hdf硬件平台文件。

 

三、启动SDK。

这里假定SDK硬件平台工程中的.bit文件和Hardware Platform描述文件已经被上述操作更新,并且搭建起了SDK应用工程(Application Project和对应的BSP)。

1、将BSP中的Xilinx文件系统库(xilffs,Xilinx FAT File System)启用,配置选项默认:

开启xilffs才能构建后面的FSBL即BootLoader工程。

2、基于现有的HW平台和BSP,建立一个FSBL(First-Stage BootLoader)工程。

这个FSBL工程将作为BootROM固件,为器件启动(Boot)做基础的准备工作,它的main()函数大致包括这些过程:

(1)初始化MIO,初始化PLL,初始化时钟,初始化DDR;

(2)清空器件的数据缓存;

(3)映射/注册异常处理例程;

(4)测试DDR读写功能;

(5)初始化PCAP;

(6)确定启动方式(QSPI FLASH,NOR FLASH,SD,JTAG等等);

(7)加载启动镜像(Boot Image)。

3、编译这个FSBL工程,生成对应的.elf文件,它生成在FSBL工程的Debug目录下。

4、选中FSBL工程,然后执行菜单栏Xilinx -> Create Boot Image,生成一个.bif文件(Boot Image Format):

镜像文件的组成,第一部分是FSBL(首先执行的启动程序),第二部分是PL逻辑电路配置,第三部分是PS程序。注意将FSBL.elf的分区类型设定为BootLoader,其他两个文件可以指定为DataFile。

5、使用Xilinx -> Program Flash Memory功能烧写.bin文件到存储器件,注意Flash Type需要对应实际器件:

 

四、完成,将BOOT方式调整为QSPI FLASH,上电启动。

 

posted @ 2021-05-24 23:10  ygpygp1234  阅读(2077)  评论(0编辑  收藏  举报