0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

教你如何在板载的QSPI Flash中存储比特流配置文件和应用程序

YCqV_FPGA_EETre 来源:未知 作者:佚名 2017-12-24 10:22 次阅读

如何从Flash启动嵌入式系统

以Arty A7开发板为例手把手教你实现

在诸多关于MicroBlaze软核处理器的例程中,往往都是使用JTAG下载然后借助SDK执行程序代码。然而无论是在项目展示还是实际应用中,我们都希望我们的设计可以即插即用,免去重复烧写的麻烦和必须使用SDK运行程序的限制。

事实上,为了部署一个真实的系统,需要在没有任何人为操作的情况下从非易失性存储器中启动MicroBlaze处理器并加载程序代码。

本篇文章,我们就围绕这个话题,以Digilent Arty Artix-7开发板为例,教你如何在板载的QSPI Flash中存储比特流配置文件和应用程序

QSPI有两个主要作用:

配置Artix FPGA

存储应用软件

对于第一个功能,我们在Vivado设计中不需要包含QSPI接口。我们只需要在Vivado配置中更新对QSPI的设置,提供QSPI Flash存储器与FPGA配置管脚的连接。然而,一旦FPGA配置完成并调用MicroBlaze软核处理器,我们则需要在设计中引入与QSPI Flash通信的接口。这个新添加的接口允许引导程序(bootloader)从QSPI Flash存储器中复制应用程序到Arty实际执行的DDR SDRAM存储介质中。

当然,这会引起一个问题,即MicroBlaze bootloader(引导程序)从何而来?

开发bootloader(引导程序)的流程图如下所示:

我们的目标是创建一个MCS镜像,它包含了FPGA比特流和应用软件文件,我们要将它烧写到QSPI Flash中。为了实现这个方案我们需要在Vivado和SDK中执行以下步骤:

在已经存在的Vivado MicroBlaze设计中引入(添加)一个QSPI接口。

在Vivado中编辑器件设置,使用Master SPI_4来配置器件,并且将bit文件压缩,构建完成后将应用导出到SDK。

在SDK中,基于导出的硬件设计创建一个新的应用工程。在工程创建对话框,选择SREC SPI Bootloader模板。这个选择会创建一个SREC bootloader应用,它会从QSPI Flash中加载主应用程序代码。在构建bootloader ELF之前,我们首先要为应用软件定义对于QSPI基址的地址偏移,在这个示例中为0x600000。我们在blconfig.h中定义这个偏移量。我们还需要更新SREC Bootloader BSP来鉴别正确的串口Flash存储器件。因此重新配置BSP。使用的系列标识号在BSP libsrc目录下的xilisf.h中定义。对于这个应用我们选择类型5,因为Arty板卡使用Micron QSPI器件,它的标识号即为类型5。

现在我们在SDK中创建第二个应用工程。这也是我们将使用bootloader加载的应用程序。在这个应用中我们创建了一个简单的“hello world”工程,确保在linker文件中这个程序从DDR SDRAM开始运行。为了创建MCS文件,我们需要应用程序为S-record格式。这个格式以ASCII格式存储二进制信息。(这个格式已经有40年的历史,最初是为8位Motorola 6800微处理器而开发的。)我们可以使用SDK将生成的ELF转换为S-record格式。为了在SDK中生成S-record文件,我们打开bash shell窗口,切换到ELF所在的目录然后输入如下命令:

cmd /c mb-objcopy -O srec .elf .srec

创建好bootloader ELF文件后,现在我们要在Vivado内将比特流(bitstream)文件与bootloader ELF文件合并。这个步骤允许bootloader被加载到MicroBlaze处理器的本地存储空间,并且按照配置运行。因为这个存储空间很小,所以bootloader应用也需要很小才可以。如果你正遇到减小软件应用大小的问题,不妨在增加本地存储内存之前考虑使用编译器优化。

创建好bit文件和S-record文件后,我们使用Vivado硬件管理器来增加配置存储器。

最后一步是生成统一的MCS文件,包含合并的bitstream(比特流)文件和应用软件。当生成这个文件时,我们需要记住加载应用程序时使用与SREC bootloader相同的偏移量。

一旦这个文件构建完成并烧写到QSPI存储中,我们就可以进行测试查看MCS文件的工作情况。将Arty板卡与PC终端建立连接然后按下板卡上的复位(reset)按钮。几秒钟后你就会看到Arty板卡上的“done”LED灯亮起,然后在终端窗口中看到SREC bootloader的执行结果。报告应该显示S-record文件在程序执行前已经从QSPI加载到DDR SDRAM中了。

到这里,我们就有了一个可以部署到我们设计中的MicroBlaze工作系统了。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式系统
    +关注

    关注

    40

    文章

    3436

    浏览量

    128229
  • artya7
    +关注

    关注

    0

    文章

    1

    浏览量

    2431

原文标题:以Arty A7为例,教你如何从Flash启动MicroBlaze软核

文章出处:【微信号:FPGA-EETrend,微信公众号:FPGA开发圈】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    labview生成exe文件如何配置文件

    可执行文件之前,您需要确保正确配置文件,以便应用程序能够在不同计算机上正确运行。 下面是一个详尽、详实、细致的步骤指南,告诉您如何配置LabVIEW生成的可执行
    的头像 发表于 12-27 16:28 647次阅读

    oracle配置文件类型关联

    Oracle是一种业界领先的关系型数据库管理系统,它在大型企业中被广泛使用。Oracle的配置文件对于数据库的稳定运行和性能优化至关重要。在这篇文章中,我们将详细讨论Oracle的一些重要配置文件
    的头像 发表于 12-06 10:17 228次阅读

    oracle配置文件tnsnames怎么配置

    Oracle配置文件tnsnames.ora是一个文本文件,用于定义数据库连接的别名和连接信息。通过配置文件,可以在应用程序中使用别名来连
    的头像 发表于 12-06 10:15 1309次阅读

    php的配置文件是什么

    PHP的配置文件是一种用于配置PHP解释器的文本文件。它包含了一系列的指令和选项,用于影响PHP的行为和性能。通过修改配置文件,可以改变PHP解释器的默认行为,从而满足不同的需求。 在
    的头像 发表于 12-04 15:55 813次阅读

    springboot的核心配置文件有哪些

    的工作量。 Spring Boot的核心配置文件主要有以下几个: application.properties:Spring Boot应用程序的主要配置文件。它使用Java的键值对格式来定义各种
    的头像 发表于 12-03 15:30 553次阅读

    springboot的全局配置文件有几种

    Spring Boot是一种快速开发框架,其通过提供配置文件来实现对应用程序配置。全局配置文件在Spring Boot中起着非常重要的作用,可以用于
    的头像 发表于 12-03 15:28 496次阅读

    linux修改网卡ip配置文件

    Linux是一种开源的操作系统,因此,它给用户提供了很高的自由度,可以根据个人需要进行各种定制和配置。其中,修改网络接口配置文件是常见的操作,可以通过修改网卡ip配置文件来设置网络接口的IP地址
    的头像 发表于 11-17 10:51 1235次阅读

    KT142C语音芯片配置文件总是不起作用?配置文件的问题集中归纳

    KT142C语音芯片配置文件总是不起作用?配置文件的问题集中归纳
    的头像 发表于 10-20 15:04 282次阅读
    KT142C语音芯片<b class='flag-5'>配置文件</b>总是不起作用?<b class='flag-5'>配置文件</b>的问题集中归纳

    用于配置两个QSPI将序列数据比特传输到其它设备

    应用程序:M480系列微控制器(MCU)同时发送 QSPI 4 序列数据比特时使用此示例代码。 BSP 版本: M480 BSP CMSIS V3.05.001 硬件
    发表于 08-29 06:38

    使用NAU88L25播放存储在外部SPI Flash W25Q32的WAV文件

    应用程序: 本样本代码使用外部编码 NAU88L25 播放存储在外部 SPI Flash W25Q32 的 WAV 文件 。 BSP 版
    发表于 08-22 07:17

    请问nuclei studio编写的软件如何与vivado生成的mcs文件储存在同一块flash

    对zynq进行软硬件开发的时候,xilinx SDK可以将软件和比特流文件合在一起存在flash,nuclei studio也有这功能吗? 如果不能,要怎么引导软件
    发表于 08-12 08:23

    教程 3:构建自定义配置文件

    教程 3:构建自定义配置文件
    发表于 07-06 18:49 0次下载
    教程 3:构建自定义<b class='flag-5'>配置文件</b>

    教程 2:自定义配置文件示例

    教程 2:自定义配置文件示例
    发表于 07-04 20:50 0次下载
    教程 2:自定义<b class='flag-5'>配置文件</b>示例

    基于libconfig进行配置文件解析

    本文介绍基于libconfig进行配置文件解析
    的头像 发表于 06-08 10:18 852次阅读
    基于libconfig进行<b class='flag-5'>配置文件</b>解析

    Python程序配置文件管理的最佳工程实践

    现在配置对象已经是单例了,但还有一个问题,它的每个配置项的值都是默认值,我们当然是希望它在创建对象的时候是使用配置文件中的值啦。下面看需求三怎么实现。
    的头像 发表于 05-04 10:00 486次阅读