资讯详情

用FM25F32烧写并启动Zynq_xc7z020

用FM25F32烧写并启动Zynq_xc7z020

  • 概述
  • 程序说明
  • 烧写步骤
    • 修改QSPI使能标志QE位
    • 打包boot.bin烧写文件。
    • 修改烧写程序
    • 烧写程序

概述

对于Xilinx公司Zynq系列的FPGA支持QSPI启动加载的方式,但在Vivado开发环境SDK复旦微电子生产不能支持国产化厂家Nor QSPI Flash,为此,在测试板上进行了验证FPGA采用XC7Z020,Nor FLASH采用FM25F32。并成功烧写uboot和FSBL,成功启动加载。 因为SDK不能支持这个FLASH,所以用SDK自带烧写工具烧写不成功。因此,烧写采用自编测试程序。 资源地址: Zynq_xc7z020配合复旦微QspiFLASH_FM25F32烧写配置程序_back_20170613

程序说明

工程主函数(int main() \flash_test\src\testperiph.c 该程序是在Xilinx官网提供的FLASH测试程序基础上进行的修改。由于Zynq系列的FPGA默认采用QSPI但是FM25F32默认为标准SPI读写方式,手册明确说明需要QE支持位置1QSPI模式。因此,初始化函数主要增加(int FWNOR_init(XQspiPs *QspiPtr)),修改了函数QE状态标志位,只需写一次,状态就会固化,断电后不需要重复位置。

烧写步骤

修改QSPI使能标志QE位

将FWNOR_init解开函数中的以下两句话,重新编译并在线加载,在函数执行结束时设置停电位置,全速运行,程序停止在断点后完成。每个芯片只需要在第一次加电时设置一次,可以固化,不需要再次修改。

// XQspiPs_PolledTransfer(QspiPtr, WriteEnableCmd, NULL, //     sizeof(WriteEnableCmd)); // XQspiPs_PolledTransfer(QspiPtr, WriteStuRegCmd, NULL, //     sizeof(WriteStuRegCmd)); 

打包boot.bin烧写文件。

与其他Flash打包boot.bin同样的文件方法,不再重复。

修改烧写程序

由于每个烧写程序的大小不同,烧写程序需要根据实际程序的大小进行修改。本例烧写文件的大小为470012Byte,见附件Boot.bin。需要修改PAGE_COUNT计算方法为: 烧写文件字节数/256 (如有小数则应 1,因为FLASH页面只能写,不能支持随机写)。

烧写程序

因为我们已经使能了QE所以需要将位FWNOR_init以下两行屏蔽函数:

// XQspiPs_PolledTransfer(QspiPtr, WriteEnableCmd, NULL, //     sizeof(WriteEnableCmd)); // XQspiPs_PolledTransfer(QspiPtr, WriteStuRegCmd, NULL, //     sizeof(WriteStuRegCmd)); 

在程序第331行编译和在线加载程序(FLASH擦拭后烧写前)和第357行设置断点。运行到第一个断点后,需要通过模拟器在线load烧写文件到0x2万地址,长度为文件大小。Load当程序执行到第二个断点时,再次运行程序。

标签: 二极管pk25f

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台