赞
踩
确保quartus中能正常下载sof文件
1)将下面两个选项选上,选上之后重新generating BSP,然后再重新编译工程
2)烧写完之后点击nios ii–>flash programmer
新建:
选择setings.bsp文件
添加sof和elf文件:
如果报错:
原因:使用的不是altera的原厂flash芯片。不同的公司的SPIFlash有不同的ID,并且flash的sector大小都不一样,所以需要构建一个文档去说明这些情况
解决方法:
1、首先在<nios2_install>/bin文件夹下面新建nios2-flash-override.txt文件; 2、输入下述代码,下面描述的器件都是Altera的EPCS器件,sector_size表示sector大小,sector_count表示sector个数; [EPCS-202011] # EPCS1N (lead-free) sector_size = 32768 sector_count = 4 [EPCS-202013] # EPCS4N (lead-free) sector_size = 65536 sector_count = 8 [EPCS-202015] # EPCS16N (lead-free) sector_size = 65536 sector_count = 32 [EPCS-202017] # EPCS64N (lead-free) sector_size = 65536 sector_count = 128 3、在上述代码中添加自己选择的通用SPIFlash,例如: [EPCS-EF4015] # EPCS64N (Eon-lead-free) sector_size = 65536 sector_count = 128 参考:https://blog.csdn.net/subkiller/article/details/6394306
修改后的nios2-flash-override.txt: [EPCS-202011] # EPCS1N (lead-free) sector_size = 32768 sector_count = 4 [EPCS-202013] # EPCS4N (lead-free) sector_size = 65536 sector_count = 8 [EPCS-202015] # EPCS16N (lead-free) sector_size = 65536 sector_count = 32 [EPCS-202017] # EPCS64N (lead-free) sector_size = 65536 sector_count = 128 [EPCS-EF4015] # EPCS64N (Eon-lead-free) sector_size = 65536 sector_count = 128
解释一下:[EPCS-EF4015] # EPCS64N (Eon-lead-free)中,EPCS-EF4015是使用的SPIFlash的id号,上面报错的信息中可以看到这个信息:
No EPCS layout data - iooiang for section [EPCS-EF40151]
找不到EPCS-EF40151这个器件,这个是器件的ID号。也可以通过阅读数据手册查找。
sector_size = 65536
sector_count = 128
这是flash的大小信息,可以通过手册获取。
成功的现象:
1、复制文件到工程目录下
2、打开脚本命令窗口,输入
./generate_jic.sh
再通过“ls”命令查看生成的文件,我们要用的是.hex文件
然后切换到quartus ii软件中
运行generate_jic.tcl脚本:
按照上面的操作完毕之后,再生成的文件夹myoutput_files中找到jic文件:
然后在quartus ii中打开烧写代码的窗口,选择jic文件:
generate_jic.cof
<?xml version="1.0" encoding="US-ASCII" standalone="yes"?> <cof> <eprom_name>EPCS16</eprom_name> <flash_loader_device>EP4CE10</flash_loader_device> <output_filename>./myoutput_files/hs_combined.jic</output_filename> <n_pages>1</n_pages> <width>1</width> <mode>7</mode> <hex_block> <hex_filename>./myoutput_files/swimage.hex</hex_filename> <hex_addressing>relative</hex_addressing> <hex_offset>0</hex_offset> </hex_block> <sof_data> <user_name>Page_0</user_name> <page_flags>1</page_flags> <bit0> <sof_filename>myoutput_files/hwimage.sof</sof_filename> </bit0> </sof_data> <version>5</version> <create_cvp_file>0</create_cvp_file> <options> <map_file>1</map_file> </options> </cof>
注意如果使用的flash器件不是epcs16的需要更改上面代码的第3代码;如果使用的fpga型号不是epc4ce10的需要修改第4行:
<eprom_name>EPCS16</eprom_name>:把EPCS16改为对应的flash器件名称,如EPCS64
<flash_loader_device>EP4CE10</flash_loader_device>:如果FPGA型号不是EP4CE10,改一下,如:EP4CE75
generate_jic.sh
#/bin/sh rm -rf flashconv mkdir flashconv chmod 777 ../../output_files/*.sof cp ../../output_files/*.sof ./flashconv/hwimage.sof cp *.elf ./flashconv/swimage.elf cd flashconv chmod 777 swimage.elf sof2flash --input=hwimage.sof --output=hwimage.flash --epcs -verbose elf2flash --input=swimage.elf --output=swimage.flash --epcs --after=hwimage.flash --verbose nios2-elf-objcopy --input-target srec --output-target ihex swimage.flash swimage.hex rm -rf ../../../myoutput_files mkdir ../../../myoutput_files cp swimage.hex ../../../myoutput_files/swimage.hex cp hwimage.sof ../../../myoutput_files/hwimage.sof cp ../generate_jic.cof ../../../generate_jic.cof cp ../generate_jic.tcl ../../../generate_jic.tcl cd ../
generate_jic.tcl
exec quartus_cpf -c generate_jic.cof
注意:路径需要根据自己的情况调整。
---晓凡 2024年3月2日于武汉书
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。