Altera FPGA程序固化
转载自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 E
和EP4CE22
(注:这里我选的是EP4CE10
系列FPGA如图
(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文件。
(注:
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