关于sof与NIOS II的elf固件合并生成jic文件,我在参考网上的教程后,按教程操作,但中间遇到一些问题,在自己调试后,终于搞定,现在将一步一步的教程分享给大家,大家可以进行转载,请注明来源,谢谢!
本文参考【小梅哥SOPC学习笔记】sof与NIOS II的elf固件合并jic得到文件 https://www.cnblogs.com/xiaomeige/p/6709991.html
有两种方法可以让大家使用,一种是输入命令法,另一种是把命令放在txt文件中,执行TXT文件即可,第一种每次转化都要输入命令,比较繁琐,第二种,简单修改txt文件即可,我推荐第二种,下面两种方法都介绍下:
不管是方法一还是方法二,前提首先要在Qsys里面加入EPCS模块,如下图所示。然后生成对应的.sof文件和.elf文件。
方法一:命令法
1.将.sof 文件生成flash文件:
⑴首先我们打开我们的NIOS II软件工程,可看到led和led_bsp
⑵选中led,单击右键并选择Nios II -> Nios II Command Shell
此时出现如下界面
⑶将quaryus生成的.sof文件从output_files文件夹中拷贝到led文件夹中(目录如下图):
即从
拷贝到
⑷在命令行窗口中执行
sof2flash --input=test_led.sof --output=hwimage.flash --epcs –verbose命令
使用ls命令,可看到生成了hwimage.flash
2.将.elf文件生成flash文件:
⑴输入命令:elf2flash --input=led.elf --output=swimage.flash --epcs --after=hwimage.flash –verbose
使用ls命令,可看到生成了swimage.flash文件
3.转换.flash文件到.hex文件
直接输入以下命令:nios2-elf-objcopy --input-target srec --output-target ihex swimage.flash swimage.hex
输入ls命令,可看到生成swimage.hex
4.把hex文件转换成jic文件
⑴在Quartus® II软件中,open File > Convert Programming Files > Set the programming file as JTAG Indirect Configuration File (.jic).
⑵选择EPCS
在配置下拉菜单中选择合适大小的EPCS器件(见第7步图)
⑶命令jic
命名你的输出.jic 文件(见第7步图)
⑷Add Device
点击Flash Loader的下面,在右边选择Add Device (见第7步图)
⑸选择FPGA器件
从列表中选择你的FPGA器件(见第7步图)
⑹Add SOF
点击SOF Data,选择Add File,选择加.sof 文件(见第7步图)
⑺Add Hex data
点击Add Hex data,选择Relative addressing,选择上面生成的.hex 文件
⑻.然后点击Generate生成。生成完成后检查生成的 .map 文件(使用记事本打开)有Page_0在起始地址0x0,.hex文件在Page_0结束地址后的起始地址1
5.下载jic文件
下载完成后,重新对FPGA上电,观看效果
方法二:txt文件法
1.在led目录下新建一个txt文件
2.把命令复制到txt文件中
sof2flash --input=test_led.sof --output=hwimage.flash --epcs -verbose
elf2flash --input=led.elf --output=swimage.flash --epcs --after=hwimage.flash -verbose
nios2-elf-objcopy --input-target srec --output-target ihex swimage.flash swimage.hex
如果下次下载程序时,只需要把下图中的名字改成对应的即可。
3.在命令窗口执行./test.txt命令
生成了和方法一一样的hwimage.flash,swimage.flash,swimage.hex文件。
4.生成jic文件
按照上面方法一的步骤,把hex文件转换成jic文件
5.下载程序
按照方法一中的下载程序步骤