生成jic文件,固化代码

生成jic文件,固化代码

方法 一:

确保quartus中能正常下载sof文件

1)将下面两个选项选上,选上之后重新generating BSP,然后再重新编译工程

image-20240312110505720

image-20240312110651165

2)烧写完之后点击nios ii–>flash programmer

image-20240312110809422

新建:

image-20240312110906540

选择setings.bsp文件

image-20240312111004985

image-20240312111219307

添加sof和elf文件:

image-20240312111427789

如果报错:

image-20240312153746409

image-20240312153710214

原因:使用的不是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.youkuaiyun.com/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、复制文件到工程目录下

image-20240312112428725

2、打开脚本命令窗口,输入

./generate_jic.sh

image-20240312112537573

image-20240312112616801

image-20240312112804111

再通过“ls”命令查看生成的文件,我们要用的是.hex文件

image-20240312112849933

然后切换到quartus ii软件中

image-20240312113142327

运行generate_jic.tcl脚本:

image-20240312113214181

按照上面的操作完毕之后,再生成的文件夹myoutput_files中找到jic文件:
image-20240312113347062

然后在quartus ii中打开烧写代码的窗口,选择jic文件:

image-20240312113513885

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

注意:路径需要根据自己的情况调整。

---晓凡 202432日于武汉书
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值