[X]关闭
1

(高级篇)S05-CH04-应用程序使用 MIG 怎样从 bootloader 引导

摘要: 软件版本:VIVADO2017.4操作系统:WIN10硬件平台:ARTIX-7 系列开发板米联客(MSXBO)论坛www.osrc.cn答疑解惑专栏开通,欢迎大家给我提供!!!4.1概述 上一章我们介绍了Macroblaze与FPGA交互EMIF通信,这一章我们将学 ...

软件版本:VIVADO2017.4

操作系统:WIN10

硬件平台: ARTIX-7 系列开发板

米联客(MSXBO)论坛www.osrc.cn答疑解惑专栏开通,欢迎大家给我提供!!!

4.1 概述

       上一章我们介绍了Macroblaze与FPGA交互EMIF通信,这一章我们将学习应用程序通过MIG从 bootloader 引导的方法。

4.2 硬件工程搭建

Step1:创建一个 vivado 工程,给工程取个名字,这里将工程名字命名为project_A7_boot,选择对应芯片(如果还不熟悉如何创建工程步骤,请参考前两季课程)。

Step2:点击Create Block Design,创建一个BD文件,并命名为design_boot。

Step3:单击IP Catalog,选取Memory Interface Generator(MIG 7 series)IP添加到Block design中,并进行相应的配置。(如果还不熟悉如何配置,请参考第一节课程前两季课)

Step4:添加 IP clocking Wizard,设置时钟输入和输出。

Step5:添加软核 Microblaze,点击 Run Block Automation,其中 Local Memory 是Microblaze  的内存,使用资源是 BlockRAM,可以自己选择大小,使能中断和AXI 接口。

 

Step6:添加软核 Microblaze,点击 Run Block Automation,使用bootloader功能时,需要使能Microblaze的cache功能。

Microblaze 配置要求如下

如图点击Run connectionAutomation进行连接

Step7:需要在工程中添加 QSPI 模块,并且对QSP I模块进行配置。

需要注意的地方有两点:

  1. ext_spi_clk:在 QSPI 模式下这个时钟的两分频就是给 SPI Flash 的访问时钟,因此这个时钟要根据 QSPI Flash 的参数设置到合理值;
  2. STARTUPE2 原语:如果外部的 Flash 挂在 FPGA 的专用配置管脚上就要使能该原语,使用普通 IO 则不能使能。

Step8:在 XDC 文件进行约束,生成所需要的 bit 文件

在 XDC 文件生成需要的配置文件,通常都是 SPI 和 BPI 配置,可以使用语句如下:

1.SPI flash约束

这里spi flash约束是针对博兰锐思主板M7 的N25Q128A13BSF40E SPI flash进行的约束 。

set_property CFGBVS VCCO [current_design]

set_property CONFIG_VOLTAGE 3.3 [current_design]

set_property BITSTREAM.GENERAL.COMPRESS true [current_design]

set_property BITSTREAM.CONFIG.CONFIGRATE 50 [current_design]

set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4 [current_design]

set_property BITSTREAM.CONFIG.SPI_FALL_EDGE Yes [current_design]

2.BPI flash

这里bpi flash 是针对VC707 的 PC28F00AG18FE BPI flash进行的约束 。

set_property BITSTREAM.CONFIG.CONFIGRATE 50 [current_design]

set_property BITSTREAM.CONFIG.BPI_SYNC_MODE Type1 [current_design]

set_property BITSTREAM.CONFIG.EXTMASTERCCLK_EN div-1 [current_design]

set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]

set_property BITSTREAM.CONFIG.UNUSEDPIN Pullup [current_design]

set_property CONFIG_MODE BPI16 [current_design]

set_property CFGBVS GND [current_design]

set_property CONFIG_VOLTAGE 1.8 [current_design]

4.3 软件设计

Step1:单击File-New-Application Project开始创建一个SDK工程。

Step2:在新弹出来的窗口中,输入工程名字helloworld (注意不能有非法字符)。

Step3:单击Next,然后在左侧选择helloworld工程,最后选择Finish。

Step4:确认应用程序空间在 MIG 空间内。

Step5:创建 Microblaze Bootloader。

Step6:修改 xilisf 库。

修改如下:serial_flash_family=5 选择 Spansion 系列 QSPI Flash, serial_flash_interface=1 选择 AXI 接口,如图所示。

Step7:修改程序空间的偏移地址

      修改存储应用程序的 Flash 偏移量,如图所示。当前示例选用的 FPGA bit 文件约为 3.5MB,因此偏移量选择0x500000,需要根据实际 FPGA 容量进行调整。可以选大一点。

Step8:确认 spi bootloader 链接脚本均在内部 RAM 空间

注意:bootloader 是优先加载在 bram 里面然后再引导应用程序

Step9:写 FLASH 文件

       开发板通电,下载 bit 文件,第一步需要将 fpga bit 和 spi bootloader 的 elf 文件先合成,如图所示,点击编程,默认合成的文件命名为 download.bit。如果擅长使用命令行,也可以用 updatemem 命令手动生成。

可以看到,download.bit文件生成在design_boot_wrapper_hw_platform文件夹中。

先烧写应用程序,注意偏移地址。对应FLASH 型号为的N25Q128A13ESE40F

再烧写 download.bit 文件,注意偏移地址是 0x00

Step10:烧写成功后,断电启动完成后的串口输出如下(串口的baud rate设置为9600)。

        如果要加快引导速度,需要把 spi bootloader 中 bootloader.c 里面的#define VERBOSE 注释,因为这个使能会打印很多调试信息。


路过

雷人
1

握手

鲜花

鸡蛋

刚表态过的朋友 (1 人)

发表评论

最新评论

引用 猪猪 2021-3-11 10:09
好好

查看全部评论(1)

本文作者
2019-11-7 17:38
  • 1
    粉丝
  • 5519
    阅读
  • 1
    回复

关注uisrc网络

扫描关注,了解最新资讯

电话:0519-80699907
EMAIL:270682667@qq.com
地址:常州溧阳市天目云谷3号楼北楼
热门评论
排行榜