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工作系统了。

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

    关注

    41

    文章

    3817

    浏览量

    133865
  • artya7
    +关注

    关注

    0

    文章

    1

    浏览量

    2535

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Vivado+Vitis将程序固化的Flash的操作流程

    ZYNQ 的程序固化是指将程序代码永久存储到非易失性存储,使系统上电后能自动加载运行的过程。主要固化方式:
    的头像 发表于 01-20 16:17 836次阅读
    Vivado+Vitis将<b class='flag-5'>程序</b>固化的<b class='flag-5'>Flash</b>的操作流程

    LAT1198+通过 KEIL 制作 QSPI 接口的外部 Flash 下载算法应用笔记

    随着用户的应用越来越复杂以及 GUI 等需要大存储空间的需求越来越多,很多时候我们需要将代码或数据放在外扩的 Flash 存储空间。但是这样存在一个外部 Flash 烧写的问题,尤其是
    发表于 01-11 17:25 0次下载

    使用TinyFPGA-Bootloader将比特流加载到FPGA

    在 FPGA 设计,一个常见但略显繁琐的环节是:如何方便地将新的比特流加载到 FPGA。尤其是在没有专用 USB-JTAG/编程芯片或者在低成本板卡,传统的编程方式可能需要额外硬件或较复杂流程。
    的头像 发表于 12-19 15:20 5155次阅读
    使用TinyFPGA-Bootloader将<b class='flag-5'>比特流</b>加载到FPGA

    配置文件损坏可能会带来哪些安全风险?

    配置文件损坏不仅会导致电能质量在线监测装置功能异常,还可能引发 数据安全、运维安全、设备安全、合规安全 四大类安全风险,尤其在电力系统、工业配电等关键场景,风险可能传导至电网或生产系统,造成
    的头像 发表于 12-10 16:37 570次阅读
    <b class='flag-5'>配置文件</b>损坏可能会带来哪些安全风险?

    Windows系统下用vivado将电路烧写到MCU200T板载FLASH的方法

    在Windows操作系统下使用vivado将设计的电路烧写到MCU200T开发板上的FLASH的方法。通过将硬件电路的比特流文件烧写到板载
    发表于 10-29 08:21

    一代蜂鸟E203移植普通Artix7核心板IDE的cfg配置文件修改

    大家好,本次我们团队想要分享的是如何将一代蜂鸟E203移植入自己的FPGA并协同NucleiStudio进行Debug时,其中cfg配置文件的修改; 首先我们使用的是Xilinx Artix-7
    发表于 10-29 06:45

    Vivado向FPGA的Flash烧录e203的方法

    首先导入、并配置好项目,完成项目的综合(SYNTHESIS)与实现(IMPLEMENTATION),查看有无错误与或警告信息,调整完成后,右键比特流生成(Generate Bitstream),选择
    发表于 10-23 08:28

    NucleiStudio下载程序到FPGA的E203上

    队伍编号:CICC1304 系统:win10/Ubuntu20.02 NucleiStudio:2022.12 FPGA:AX7050B 在将E203的比特流下载到FPGA上后,我们
    发表于 10-20 09:24

    ART-Pi启用外部flash是在哪里配置qspi的引脚呢?

    。由于我是按照以芯片建立工程,并没有使用ART-PI的工程。 2、我目前了解到在ART-PI工程中会有这个下载算法。 在这个链接文件配置地址 3、于是我有个好奇的点是在工程没看到有QS
    发表于 10-10 06:09

    ZYNQ UltraScalePlus RFSOC QSPI Flash固化常见问题说明

    璞致 ZYNQ UltraScalePlus RFSOC QSPI Flash 固化常见问题说明
    发表于 08-08 15:49 0次下载

    如何才能知道英飞凌Bluetooth®产品支持哪种Bluetooth®配置文件和版本?

    如何才能知道英飞凌Bluetooth®产品支持哪种Bluetooth®配置文件和版本? A2DP、AVRCP、HSP、HFP 等 是否有一个网页或文档解释每个设备支持哪些配置文件和版本? 目前我想了解以下设备特别支持的配置文件
    发表于 06-27 06:04

    配置文件的差异介绍

    配置文件的差异 FA模型应用在config.json文件描述应用的基本信息,一个应用工程可以创建多个Module,每个Module中都有一份config.json
    发表于 06-05 06:50

    为什么在SDK 1.3.5创建的配置文件是在SDK 1.3.4创建的 打不开?

    为什么在 SDK 1.3.5 创建的配置文件是在 SDK 1.3.4 创建的 打不开?
    发表于 05-13 07:22

    何在Linux配置DNS服务器

    本文详细介绍了如何在Linux配置DNS服务器,包括DNS工作原理、本地缓存、DNS查询过程,以及正向和反向查询的配置。步骤包括服务器配置
    的头像 发表于 05-09 13:38 2768次阅读
    如<b class='flag-5'>何在</b>Linux<b class='flag-5'>中</b><b class='flag-5'>配置</b>DNS服务器

    如何不使用配置实用程序对SX3进行编程?

    我们正在探索不使用配置实用程序对 SX3 进行编程的可能性。 我知道有一个 HID 示例应用程序,但它要求 SX3 已经打开 HID 接口,对吗? (顺便说一句,我无法找到如何在
    发表于 05-06 06:33