软件版本: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模块进行配置。 需要注意的地方有两点:
Step8:在 XDC 文件进行约束,生成所需要的 bit 文件 在 XDC 文件生成需要的配置文件,通常都是 SPI 和 BPI 配置,可以使用语句如下: 1.SPI flash约束 这里spi flash约束是针对博兰锐思主板M7 的N25Q128A13BSF40E SPI flash进行的约束 。
2.BPI flash 这里bpi flash 是针对VC707 的 PC28F00AG18FE BPI flash进行的约束 。
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 注释,因为这个使能会打印很多调试信息。 |
扫描关注,了解最新资讯