1、對于Altera FPGA,含Nios II時需要下載的文件有4種:.sof 文件,.pof 文件,.jic 文件,.elf 文件。
下載文件
生成工具
下載方式
下載存儲器
是否掉電丟失
.sof 文件
QuartusII編譯生成
JTAG
FPGA(SRAM )
丟失
.pof 文件
QuartusII編譯生成
AS(Active Slave)
FLSAH(EPCS64)
不會丟失
.jic 文件
QuartusII “File|Convert Programming File”
JTAG
FLSAH(EPCS64)
不會丟失
.elf 文件
Nios II IDE
JTAG(調(diào)式模式)
FPGA(SRAM )
丟失
.elf 文件
Nios II IDE
JTAG(燒寫模式)
FLSAH(EPCS64)
不會丟失
2、通常稱.sof 文件和.pof 文件為FPGA“硬件”或“固件”文件,在QuartusII中設(shè)計編譯產(chǎn)生,源文件格式有VHDL、Verilog HDL、AHDL、Tcl(一般用于引腳定義)、原理圖(一般用于頂層)等;.elf文件為“軟件”文件,在Nios II IDE中(新版本為Nios II Software Builder Tools for Eclipse)設(shè)計編譯產(chǎn)生,源文件為C語言。
3、.jic文件為JTAG間接配置文件(JTAG Indirect Configuration File),使用QuartusII File菜單下Convert Programming File命令將.sof文件轉(zhuǎn)換生成,然后使用QuartusII的Tools菜單下Programmer命令下載到FLASH中(注意:.jic文件下載到FLASH后必須關(guān)機(jī)重新加電?。┤缦聢D所示:
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,打開或?qū)牍こ蹋贜ios II IDE中點擊Tools->Flash Programmer…,出現(xiàn)如下圖所示的界面:
需要勾選的部分如圖中紅線框所標(biāo)注,第一部分是將Nios II中的軟件程序?qū)懙紽lash中,注意還需要加載JDI文件,即點擊“Load JDI File”,選擇本系統(tǒng)中的JDI文件即可。第二部分是將FPGA的配置文件一起到Flash中,點擊“Browse...”選擇Quartus II生成的.sof文件,還需選擇將配置文件下載到什么地方,此處還是Flash。最后一部分勾選的是Validata Nios II system ID before software download,即在下載軟件程序之前要確認(rèn)系統(tǒng)的ID號,這樣每次在QuartusII中修改“硬件”(即.sof文件)或在Nios II IDE中修改“軟件”(即.elf文件)后能報警提示,確保硬件與軟件最新版本同步。
沒有勾選的那一部分是將其它文件下載到Flash中,比如配置數(shù)據(jù)文件(Lince5M181 CMOS相機(jī)就有?。?、漢字字庫文件、波形文件等等,將這些文件直接存儲到Flash中,只需要讀取就可以了。
選擇好之后,點擊“Apply”,然后點擊“Program Flash”,就可以進(jìn)行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燒寫成功,關(guān)機(jī)后重新加電運行即可。
(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的設(shè)置窗口:
●選擇File菜單的New,彈出窗口:
●指定setting.bsp文件,sopc information是自動加載的。
●分別添加 .sof文件(在Quartus工程下)和.elf文件(在Nios工程下)
●點擊Start命令,進(jìn)行轉(zhuǎn)換,默認(rèn)將在software目錄下的bsp文件夾下生成flash和script兩個文件夾,并完成燒寫,斷電重新加電或復(fù)位即可。
5、對于有些FPGA,有時用上述4中的兩種方法下載程序到FLASH后,加電無法正常運行,這好像是Altera公司Nios II EDS的bugs,許多用戶都遇到過,在Altera forum上有人給出解決方法:
(1) 在硬盤根目錄下新建一個文件夾。例如:D:\jic。
(2) 將Quartus II工程、Nios II工程編譯生成的sof、elf都拷貝到此文件夾內(nèi);
(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,執(zhí)行:
cd d:\jic
./xxx.sh
(5) 在Quartus II中使用Convert Programming Files把上述命令生成的sof_elf.hex轉(zhuǎn)換成.jic文件即可,類似上述3,只是把SOF Data換成HEX Data(先Remove后Add),點Generate生成jic,再將jic寫入Flash即可。