1、对于Altera FPGA,含Nios II时需要下载的文件有4种:.sof 文件,.pof 文件,.jic 文件,.elf 文件。
2、通常称.sof 文件和.pof 文件为FPGA“硬件”或“固件”文件,在QuartusII中设计编译产生,源文件格式有VHDL、Verilog HDL、AHDL、Tcl(一般用于引脚定义)、原理图(一般用于顶层)等;.elf文件为“软件”文件,在Nios II IDE中(新版本为Nios II Software Builder Tools for Eclipse)设计编译产生,源文件为C语言。
3、.jic文件为JTAG间接配置文件(JTAG Indirect Configuration File),使用QuartusII File菜单下Convert Programming File命令将.sof文件转换生成,然后使用QuartusII的Tools菜单下Programmer命令下载到FLASH中(注意:.jic文件下载到FLASH后必须关机重新加电!)如下图所示:
4、 .elf文件不能单独下载,必须与“硬件”.sof文件一起下载才能运行(也可先在QuartusII中下载.sof,再在NiosII IDE或Nios II Software Builder Tools for Eclipse中下载.elf),以QuartusII 11.0版本为例,方法如下:
(1) 使用Nios II 11.0 IDE
先点击“开始 | 程序 | Altera|Nios II EDS 11.0 | Legacy Nios II Tools | NiosII11.0 IDE”(注意: 11.0版本的“Legacy Nios II Tools”必须单独下载安装!)启动NiosII11.0 IDE,打开或导入工程,在Nios II IDE中点击Tools->Flash Programmer…,出现如下图所示的界面:
需要勾选的部分如图中红线框所标注,第一部分是将Nios II中的软件程序写到Flash中,注意还需要加载JDI文件,即点击“Load JDI File”,选择本系统中的JDI文件即可。第二部分是将FPGA的配置文件一起到Flash中,点击“Browse...”选择Quartus II生成的.sof文件,还需选择将配置文件下载到什么地方,此处还是Flash。最后一部分勾选的是Validata Nios II system ID before software download,即在下载软件程序之前要确认系统的ID号,这样每次在QuartusII中修改“硬件”(即.sof文件)或在Nios II IDE中修改“软件”(即.elf文件)后能报警提示,确保硬件与软件最新版本同步。
没有勾选的那一部分是将其它文件下载到Flash中,比如配置数据文件(Lince5M181 CMOS相机就有!)、汉字字库文件、波形文件等等,将这些文件直接存储到Flash中,只需要读取就可以了。
选择好之后,点击“Apply”,然后点击“Program Flash”,就可以进行Flash的烧写了。若Nios II IDE的Console中有如下提示信息:
#!/bin/sh
………….
Programmed xxxKB +xxxKB in x.xs (xxxKB/s)
Did not attempt to verify device contents
Leaving target processor paused
则表示Flash烧写成功,关机后重新加电运行即可。
(2)使用Nios II Software Builder Tools for Eclipse(简称 Nios II SBT for Eclipse)
从Altera SOPC Builder的Nios II菜单中启动,或从“开始 | 程序 | Altera | Nios II EDS xx.x | …”启动。然后按下述方法下载程序:
●选择Nios II菜单项中的Flash Programmer(Ctrl+7),弹出Flash Programmer的设置窗口:
●选择File菜单的New,弹出窗口:
●指定setting.bsp文件,sopc information是自动加载的。
●分别添加 .sof文件(在Quartus工程下)和.elf文件(在Nios工程下)
●点击Start命令,进行转换,默认将在software目录下的bsp文件夹下生成flash和script两个文件夹,并完成烧写,断电重新加电或复位即可。
5、对于有些FPGA,有时用上述4中的两种方法下载程序到FLASH后,加电无法正常运行,这好像是Altera公司Nios II EDS的bugs,许多用户都遇到过,在Altera forum上有人给出解决方法:
(1) 在硬盘根目录下新建一个文件夹。例如:D:\jic。
(2) 将Quartus II工程、Nios II工程编译生成的sof、elf都拷贝到此文件夹内;
(3) 按如下格式,新建一个sh文件,此处命名为xxx.sh;(sh文件是bash的批处理文件;类似于DOS的bat文件)
echo "sof>flash …"; sof2flash --epcs --input=demo.sof --output=sof.flash --quiet
echo "elf>flash …"; elf2flash --epcs --after=sof.flash --input=demo.elf --output=elf.flash
echo "cat flash…"; cat elf.flash >> sof.flash
echo "flash>hex…"; nios2-elf-objcopy --input-target srec --output-target ihex sof.flash sof_elf.hex
echo "del flash …"; rm -f *.flash
(4) 运行“开始 | 程序 | Altera | Nios II EDS 11.0 | Nios II 11.0 Command Shell”,执行:
cd d:\jic
./xxx.sh
(5) 在Quartus II中使用Convert Programming Files把上述命令生成的sof_elf.hex转换成.jic文件即可,类似上述3,只是把SOF Data换成HEX Data(先Remove后Add),点Generate生成jic,再将jic写入Flash即可。