美文网首页
Altera FPGA程序固化

Altera FPGA程序固化

作者: 阿群1986 | 来源:发表于2019-01-08 09:39 被阅读4次

    转载自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程序固化

          本文链接:https://www.haomeiwen.com/subject/ikxvrqtx.html