Abstract
有時候必須在程式中讀取文字檔或影像檔,此時該將檔案放在哪裡呢?Nios II提供了Zip File System的機制,只要將檔案放在沒有壓縮的zip檔內,就可以使用C語言的fopen()對檔案作讀取。

使用環境:Quartus II 7.2 SP1 + Nios II 7.2 SP1 + DE2(Cyclone II EP2C35F627C6)

Introduction
Nios II EDS本身就有提供Zip File System這個project template,若要使用Zip File System,可根據這個template做修改,但過程中有個小地方若不注意,整個template就無法成功執行,特別在此說明。

Hardware
Step 1:
使用友晶科技提供的reference design

硬體部分就不用使用SOPC Builder重新建立了,直接使用友晶科技所提供的reference design即可,下載

http://www.terasic.com/downloads/cd-rom/de2/DE2_System_v1.4b.zip

Step 2:
建立DE2_Zip_File_System目錄

將DE2_System_v1.4b.zip解壓縮,接著將\DE2_System_v1.4b\DE2_demonstrations\SOPC_Builder\Reference_Design\DE2_NIOS\目錄複製到c:\,並將目錄名稱改成[DE2_Zip_File_System]

Step 3:
使用Quartus II 7.2開啟\DE2_Zip_File_System\DE2_NIOS.qpf

友晶科技已經編譯了DE2_NIOS.sof,可以直接燒入至DE2,當然你想用Quartus II重新編譯也行。

Software
Step 1:
使用Zip File System project template建立一個新的Nios II專案

按<Finish>下一步。

(原創) 如何在Nios II使用Zip File System? (IC Design) (Nios II) (DE2)

Step 2:
將files.zip燒入至flash

Tools -> Flash Programmer

(原創) 如何在Nios II使用Zip File System? (IC Design) (Nios II) (DE2)

第一次按右上角New建立新configuration。

(原創) 如何在Nios II使用Zip File System? (IC Design) (Nios II) (DE2)

在project處填入本專案名稱zip_filesystem_0,會自動帶出Debug/zip_filesystem_0.elf。

(原創) 如何在Nios II使用Zip File System? (IC Design) (Nios II) (DE2)

選擇欲載入flash的Zip File System檔案,本template預設zip檔案為\DE2_Zip_File_System\software\zip_filesystem_0_syslib\files.zip,另外memory要選cfi_flash_0,最重要的,Offset要填0x100000,我就在這邊卡了一段時間,最後按下<Program Flash>將zip檔傳進flash。

(原創) 如何在Nios II使用Zip File System? (IC Design) (Nios II) (DE2)

成功寫入flash後,出現以下訊息,最後雖然會出現『Leaving target processor paused』訊息,但不用擔心,此屬正常。

(原創) 如何在Nios II使用Zip File System? (IC Design) (Nios II) (DE2)

Step 3:
執行程式

最後結果如下所示

(原創) 如何在Nios II使用Zip File System? (IC Design) (Nios II) (DE2)

完整程式碼下載
DE2_Zip_File_System.7z

Conclusion
友晶科技有一個範例,在Nios II平台實作出一個簡單的web server,那HTML要放在哪裡呢?就是放在Zip File System內。我本身正在做QR code的解碼,圖片也是放在Zip File System,這樣就可以簡單的使用C語言的fopen()作開檔的動作了,至於詳細的fopen()使用方法,在template中的範例程式都很清楚,我就不再多做說明。

See Also
(原創) 如何在Nios II對Flash進行讀寫? (SOC) (Nios II) (DE2) (DE2-70)

Reference
Nios II Software Developer's Handbook Ch.15 Read-Only Zip File System

相关文章: