需要注意的地方有两点:
① ext_spi_clk:在QSPI模式下这个时钟的两分频就是给SPI Flash的访问时钟,因此这个时钟要根据QSPI Flash的参数设置到合理值;
② STARTUPE2原语:如果外部的Flash挂在FPGA的专用配置管脚上就要使能该原语,使用普通IO则不能使能。
3. 创建Microblaze Bootloader
以下介绍如何在SDK中创建Microblaze Bootloader的方法。
第一步:创建基于SPI Flash的serc SPI Bootloader,如下图2所示。
图2 创建serc spi bootloader 第二步:修改xilisf库,serial_flash_family=5选择Spansion 系列QSPI Flash, serial_flash_interface=1选择AXI 接口,如图3所示。
图3 修改xilisf库参数 第三步:修改存储应用程序的Flash偏移量,如图4所示。
图4 修改存储应用程序的Flash偏移量 当前示例选用的FPGA bit文件约为10.5MB,因此偏移量选择12MB,需要根据实际FPGA容量进行调整。 第四步:确认serc spi bootloader链接脚本均在内部RAM空间,应用app工程的链接脚本都指向外部DDR。 到此为止serc spi bootloader工程创建完毕。 4. 烧写Flash 烧写Flash分成两个部分,一个是bit文件,一个是应用程序的serc文件。 4.1 烧写bit文件 烧写bit文件,第一步需要将fpga bit和serc spi bootloader的elf文件先合成,如图5所示,点击编程,默认合成的文件命名为download.bit。如果擅长使用命令行,也可以用updatemem命令手动生成。
图5 编程生成bit文件 第二步是烧写生成的download.bit文件到flash,这里不再多说,注意flash的偏移地址为0x00即可。
4.2 烧写应用程序serc 实际上应用程序烧进flash的是serc文件,该文件可以烧写到特殊的偏移位置。如图6所示,如果需要用其它工具烧写,也可使用命令mb-objcopy手动转换.elf文件为serc文件。
图6 烧写应用程序到特定偏移地址
需要特别注意的是,Bootloader会Check Flash的ID,因此需要确保将您的Flash芯片对应的ID添加到支持型号列表里(如果默认没有)。
|