转载自CSDN博客:
https://blog.csdn.net/yuan_hust/article/details/75269111

Altera FPGA程序固化

对MCU进行烧写程序,程序固件被写入MCU的片上存储器ROM中,现代大部分MCU的片上存储器ROM为FLASH存储器,可以实现掉电保持数据,所以可以掉电程序不丢失。
而对于Altera和Xilinx两家的FPGA芯片而言,FPGA芯片是基于SRAM的查找表(LUT),所以当将.sof下载到FPGA芯片中后,这些数据直接存储在SRAM的查找表中,一旦掉电即会丢失数据。解决方案是在FPGA芯片外部放置一片能够掉电不丢失数据的存储器,如常见的EPCS、QFLASH等,在FPGA内部设计一个专用的硬件电路,在芯片刚上电时就主动去读取该存储器中的固件,并配置到FPGA芯片中。
实验环境
Altera DE0-Nano开发板, FPGA型号:EP4CE22F17C6N
不同实验环境只需要更改对应芯片型号即可。

1. 纯硬件(Verilog)固化

(1)打开要固化的工程,编译得到.sof文件。

(2)在Quartus软件中点击File->Convert Programming Files。

(3)在弹出的窗口中,进行下列设置:

(注:此选项取决于开发板上的Flash类型,阿群测试发现手上的开发板可选EPCS16或4,而不能选64)

  • Programming file type选择JTAG Indirect Configuration File(.jic);
  • Mode选择Active Serial;
  • Configuration device选择EPCS16(或EPCS4经测试也能用。对于DE0-Nano开发板,则应选EPCS64),File name改为工程的名字或者保持默认output_files/output_file.jic

(4)在Input files to convert一栏中,点击Flash Loader一项,在右侧点击Add Device选项。选择Cyclone IV EEP4CE22
(注:这里我选的是EP4CE10系列FPGA如图

),点击OK。

(5)点击SOF Data一项,在右侧点击Add File,找到本工程目录下编译生成的.sof文件,点击Open。

(6)选中添加的.sof文件,点击Properties,选中Compression,点击OK。

打上对勾,对FPGA程序文件启用压缩存储

(7)点击Generate,

转换成功后会弹出下图所示窗口:

转换成功

(8)在下载之前先到Tools->options下勾选Iniate Confinguration after programming

否则下载完需要掉电才能应用新配置。

(9)打开Programmer,下载刚生成的.jic文件。
(注:

此步骤从Programmer烧写工具窗口的File菜单选择New File,新建一个选项

2.硬件(Verilog)+软件(Nios II软核)固化

(1)打开要固化的工程,编译的到.sof文件,打开相应的Nios II软件工程,编译生成.elf文件。为操作方便,将.sof文件复制到Nios II工程目录下。
(2)在Eclipse中,右键点击Nios II工程,选中Nios II->Nios II Commend Shell进入命令系统。当前命令所在文件夹为Nios II工程文件夹下。
(3)将编译得到的.sof文件转换为.flash文件,用到的命令为:
sof2flash --input=<hwimage>.sof --output=hwimage.flash --epcs --verbose
用编译得到的.sof文件名代替<hwinage>.sof
输出.flash文件的文件名即为hwimage.flash
成功转换显示如下图所示:

(4)将编译得到的.elf文件转换为.flash文件,用到的命令为:
elf2flash --input=<elf file>.elf --output=swimage.flash --epcs --after=hwimage.flash --verbose
用编译得到的.elf文件名代替<elf file>.elf
输出.flash文件的文件名即为swimage.flash
成功转换显示如下图所示:

(5) 将两个.flash文件分别转换为.hex文件,用到的命令为:
nios2-elf-objcopy -I srec -O ihex hwimage.flash hwimage.hex
nios2-elf-objcopy -I srec -O ihex swimage.flash swimage.hex
输出.hex文件名分别为:hwimage.hex、swimage.hex。
(6)在Quartus软件中点击File->Convert Programming Files。
(7)在弹出的窗口中,进行下列设置:Programming file type选择JTAG Indirect Configuration File(.jic),Mode选择Active Serial,Configuration device选择EPCS64,File name改为工程的名字或者保持默认。
(8)在Input files to convert一栏中,点击Flash Loader一项,在右侧点击Add Device。依次选择Cyclone IV E EP4CE22,点击OK。
(9)点击SOF Data一项,在右侧点击Remove。
(10)在右侧点击Add Hex Data,选择Relative addressing,依次添加hwimage.hex和swimage.hex。
(11)点击Generate,转换成功后会弹出下图所示窗口:

(12)检查生成的 .map 文件有hwimage.hex在起始地址0x0,swimage.hex文件在hwimage.hex结束地址后的起始地址+1
(13)打开Programmer,下载刚生成的.jic文件。


本文转载自CSDN,此处经过修改添加一些截图
原作者:yuan_hust
原文网址:
https://blog.csdn.net/yuan_hust/article/details/75269111


参考2: https://blog.csdn.net/GOGOmusic/article/details/53914312

Altera FPGA程序固化相关推荐

  1. Altera FPGA程序固化(软件+硬件)

    Altera FPGA程序固化 对MCU进行烧写程序,程序固件被写入MCU的片上存储器ROM中,现代大部分MCU的片上存储器ROM为FLASH存储器,可以实现掉电保持数据,所以可以掉电程序不丢失. 而 ...

  2. FPGA程序固化流程

      一般程序直接下载后存放在芯片上的SRAM中,调电后数据会丢失,若要上电后能够运行,则需将程序存储到外部的flash中,在上电后自动加载.程序固化的流程如下: 1,工程编译完成后,点击file-&g ...

  3. vivado下microblaze程序固化下载

    vivado版本:2016.4 FPGA:XC7A100T-fgg484 FLASH:N25Q128-3.3V-SPI-X1_X2_X4 FPGA程序固化下载流程: 1.vivado中生成XXX.bi ...

  4. 通过MCU实现Altera FPGA在线升级

    一.问题背景  在实际工程应用中,我们时常会遇到为解决某个老产品的BUG,需要在工程现场更新设备的FPGA代码,或者参加电信测试时需要现场升级设备FPGA程序以便于调试.公司现阶段所用的Altera ...

  5. FPGA学习笔记之Altera FPGA使用JIC文件配置固化教程

    FPGA学习笔记之Altera FPGA使用JIC文件配置固化教程 很多做过单片机的朋友都知 道,我们在对MCU烧写完程序固件后,那么该程序固件就存储在了该MCU内部.即使MCU断电了再重新上电,程序 ...

  6. FPGA 之 SOPC 系列(八)程序固化

    今天给大侠带来今天带来FPGA 之 SOPC 系列第八篇,程序固化,希望对各位大侠的学习有参考价值,话不多说,上货. 本篇主要讲解在完成软件与硬件开发之后,如果利用flash烧写工具对工程的固化,达到 ...

  7. 12、FPGA程序的固化和下载

    使用仿真器下载BIT文件到FPGA时,板子断电后程序就 没有了,因此需要将程序固化到板卡的FLASH或SD卡中,下次启动板卡时就从FLASH或SD卡加载程序,不用再次使用仿真器下载程序了. SD固化: ...

  8. 高云FPGA(三):程序固化和下载

    一.纯逻辑不带软核的固化 1,参考<SUG502-1.3_Gowin_Programmer用户指南>2,sram下载程序(掉电丢失) 3,FPGA片内flash固化 二.逻辑+软核固化 1 ...

  9. 全志T3+FPGA国产核心板——Pango Design Suite的FPGA程序加载固化

    本文主要基于紫光同创Pango Design Suite(PDS)开发软件,演示FPGA程序的加载.固化,以及程序编译等方法.适用的开发环境为Windows 7/10 64bit. 测试板卡为全志T3 ...

最新文章

  1. matlab读入从文件中读取大量的数据
  2. Line 923: Char 9: runtime error: reference binding to null pointer of type ‘int‘ (stl_vector.h)
  3. 前端学习(2576):选择何种方式的路由和底层原理
  4. Java设计流程执行器_Java进阶面试精选系列:SpringMVC+SpringBoot+Hibernate+Mybatis+设计模式...
  5. JAVA提示定义常量_如何在Java中定义常量(Constant)
  6. java day12【Object类、常用API】
  7. Java设计模式(四)——再谈观察者模式
  8. 微信小程序地图组件利用腾讯地图生成热力图
  9. 人工智能书籍推荐:【A027】[图灵原创].人工智能简史
  10. 自定义更改虚拟机中Ubuntu的ip地址
  11. tayga nat64优化的自省揭示tun虚拟网卡的正确玩法
  12. Javascript基础语法总结
  13. linux rapidsvn 使用教程,推荐一款简单方便的SVN客户端,在百度BAE中使用RapidSVN,百度BAE SVN教程...
  14. 七大江河水系--海河
  15. 微信公众号怎么变现?
  16. 第四章 DDR3和FLASH 基于ARTY A7的MicroBlaze系统搭建与应用
  17. 【互联网代理方案】——Zookeeper
  18. 使用stl::string去除字符串前后的空白
  19. 病毒分析系列 _ 病毒分析环境搭建
  20. 必须知道的20个位运算技巧

热门文章

  1. Spring注解实现aop
  2. mysql数据库二级233_2013年计算机等级二级mysql数据库模拟试题及答案
  3. python增强运算符_Python学习【第3篇】:Python之运算符
  4. js保存网络图片至本地
  5. Angular 自定义loading组件
  6. PCL之常用开源数据集汇总
  7. 职工工作量c语言调试分析,c语言职工工作量统计
  8. Android高级开发面试题目,再也不用担心不能升职加薪了。
  9. Windows用户程序报错或软件无法删除或者卡顿,解决办法
  10. 【Computer Organization笔记22】虚拟存储器:段式存储,页式存储