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