当前位置: 首页 > news >正文

Vivado程序固化到Flash

在上板调试FPGA时,通常使用JTAG接口下载程序到FPGA芯片中,FPGA本身是基于RAM工艺的器件,因此掉电后会丢失芯片内的程序,需要重新烧写程序。但是当程序需要投入使用时不能每一次都使用JTAG接口下载程序,一般FPGA的外围会有非易失性存储器:Flash或SD卡等,可以将程序加载进去,这样下次上电后可以直接从该存储器中读取程序并启动配置。

在使用Vivado固化程序时,通常有两种文件格式可以进行固化:

文件生成方式:

  • .bin文件‌:.bin文件是纯二进制文件,按顺序只包含原始字节流,用于烧写进flash中。在Vivado中,生成.bin文件需要在设置中勾选“-bin_file”选项‌。
  • ‌.mcs文件‌:.mcs文件是ASCII格式的文本文件,由行组成,每一行包含起始码、字节长度、地址、记录类型、数据和校验码。Vivado中生成.mcs文件需要通过“Generate Memory Configuration File”选项,并选择相应的flash型号和bit文件‌。

存储方式和用途:

  • .bin文件‌:烧写到flash中后,上电加载会自动加载到FPGA中。由于.bin文件是二进制格式,不需要解析,直接读取后写入即可,因此适用于不需要解析的场景‌。
  • ‌.mcs文件‌:同样烧写到flash中,上电后会自动加载到FPGA中。由于.mcs文件包含头部信息和校验码,写入速度相对较慢,但每行末尾的校验和确保了数据的完整性‌。

适用情况:

  • .bin文件‌:适用于不需要解析的场景,如通过其他方式更新FLASH内容时使用‌。
  • ‌.mcs文件‌:适用于需要校验和确保数据完整性的场景,特别是在JTAG烧录时使用‌。

下面介绍使用MCS文件固化程序的方法:

1、确保工程能正常工作并生成Bit流文件
在这里插入图片描述
2、生成Bit流文件后连接硬件
在这里插入图片描述
点击Open Target>Auto Connect:
在这里插入图片描述
在这里插入图片描述
启动配置生成的比特流文件以及进行 debug 的 ltx 文件,一般来说软件会自动选择的
在这里插入图片描述
3、连接好目标器件后,接下来生成存储配置文件.mcs文件和.prm文件,点击菜单栏Tools>Generate Memory Configuration File…。

  • .mcs文件:内存配置文件,主要用于将设计下载到FPGA或SoC设备上。
  • .prm文件:项目链接文件,主要用于定义芯片的内存布局和初始化变量。

在这里插入图片描述
进入配置界面:
在这里插入图片描述
等待文件生成完成
在这里插入图片描述
对应路径下生成的文件:
在这里插入图片描述
4、确保下载器和目标器件已经连接好,打开硬件连接,选中目标器件添加配置存储设备
在这里插入图片描述
在这里插入图片描述
5、点击OK直接进入固化配置界面:
在这里插入图片描述
在这里插入图片描述
等待固化完成:
在这里插入图片描述
固化完成后重新将开发板上电,FPGA芯片就会从Flash读取程序进行配置了。

程序固化过程中可能会出现报错:[Labtools 27-3347] Flash Programming Unsuccessful: Byte 169320 does not match (00 != B2)
解决方法参考这篇文章:Vivado程序固化到Flash时报错:[Labtools 27-3347] Flash Programming Unsuccessful: Byte 169320 does not match

http://www.lryc.cn/news/491952.html

相关文章:

  • HCIA笔记3--TCP-UDP-交换机工作原理
  • 计算机网络的功能
  • Redis设计与实现第14章 -- 服务器 总结(命令执行器 serverCron函数 初始化)
  • 多输入多输出 | Matlab实现TCN-GRU时间卷积神经网络结合门控循环单元多输入多输出预测
  • windows安全中心,永久卸载工具分享
  • 《安富莱嵌入式周报》第346期:开源2GHz带宽,12bit分辨率,3.2Gsps采样率示波,开源固件安全分析器, 开源口袋电源,开源健康测量,FreeCAD
  • Apache OFBiz xmlrpc XXE漏洞(CVE-2018-8033)
  • 【论文复现】融入模糊规则的宽度神经网络结构
  • sql server 获取当前日期的时间戳
  • LLM PPT Translator
  • 铲屎官进,2024年宠物空气净化器十大排行,看看哪款吸毛最佳?
  • python 中常用的定积分求解方法
  • 音视频相关的一些基本概念
  • pikachu文件上传漏洞通关详解
  • 【拥抱AI】向量数据库有哪些常见的检索算法?
  • Webpack前端工程化进阶系列(二) —— HMR热模块更新(图文+代码)
  • 【RAG 项目实战 07】替换 ConversationalRetrievalChain(单轮问答)
  • godot游戏引擎_瓦片集和瓦片地图介绍
  • 7、深入剖析PyTorch nn.Module源码
  • 如何提升编程能力第二篇
  • 问:SpringBoot核心配置文件都有啥,怎么配?
  • RHCSA作业
  • ESP32学习笔记_FreeRTOS(3)——SoftwareTimer
  • 文心一言与千帆大模型平台的区别:探索百度AI生态的双子星
  • 【c语言】文件操作详解 - 从打开到关闭
  • Flink Sink的使用
  • pcl::PointCloud<PointType>::Ptr extractedCloud; 尖括号里的值表示什么含义?
  • 《基于FPGA的便携式PWM方波信号发生器》论文分析(三)——数码管稳定显示与系统调试
  • VsCode 插件推荐(个人常用)
  • 路由策略与路由控制实验