在诸多关于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工作系统了。
PCB材料和性能评估的工具软件
论坛现场回顾:维视教育的新工科人才培养 「最佳实践 」
数千人排队争当首个志愿者:给大脑装芯片,马斯克的Neuralink真的靠谱?
意法半导体家用电器三相电机控制解决方案即将开播
以“鲲鹏展翅 无限未来”为主题的广东鲲鹏生态伙伴大会在广州成功举行
Arty A7开发板如何存储比特流配置文件和应用程序
RTC技术是流媒体云时代的桥与路 融云通过IM+RTC+推送打通应用场景
估算特斯拉Cybertruck预订量达到45万,加州预订量最高
NVIDIA Metropolis合作伙伴改善城市宜居性和安全性
华为MateX已获得全球首张5G手机CE证书
科技公司要预防AI快速发展带来的风险
OPPO申请了一款新机专利该机将采用手动滑盖的设计
RFID和语音合成技术有什么关联
vivo获英国BSI认证 信息安全和隐私信息管理体系达国际标准
比特币今日价格涨超6%破27000由于尚未接到“关闭比特币交易平台”通知
蓝牙耳机性价比高的品牌、蓝牙耳机性价比排行
莱迪思和Flexibilis推出FPGA以太网交换IP核
区块链地底层技术开发场外OTC交易所源码开发
中国是最大的电动两轮车消费国,需求占全球销量的90%以上
如何使用ESP8266WiFi模块控制机械臂