1. 程式人生 > >WIN7下編譯NIOS2出現如下錯誤提示:make:***[**.mk] Error 1 或者 make: *** [**.elf] Error 1

WIN7下編譯NIOS2出現如下錯誤提示:make:***[**.mk] Error 1 或者 make: *** [**.elf] Error 1

我的系統是WIN7,QuartusII和NIOS2的版本都是10.0,按照特權同學的《特權和你一起學NIOS2--第三章 流程實踐案例——手把手第一個工程》操作,前面都很順利,後來在Eclipse裡建好了軟體工程之後,編譯(Build Project),出現如下錯誤提示:make:***[**.mk] Error 1 或者 make: *** [**.elf] Error 1。

看了很多論壇,很多網友都提了自己的解決思路,歸納起來,大概有幾種解決辦法:
(1)、Regenerate the BSP to update the Makefile, and then build again. To regenerate from Eclipse: 1. Right-click the BSP project. 2. In the Nios II Menu, click Generate BSP.


(2)、Here is the list of files that you can select to change their compatibility mode under the Quartus II->bin->cygwin->bin folder:

1. Make.exe 
2. Sh.exe 
3. Echo.exe 
4. Cygstart.exe 
5. MakeInfo.exe 
6. Perl.exe
7. Collect2.exe (under nios2eds\bin\nios2-gnutools\ H-i686-pc-cygwin\libexec\gcc\nios2-elf\3.4.6) 


8. Nios2-elf-g++.exe (under nios2eds\bin\nios2-gnutools\ H-i686-pc-cygwin\bin)

方法就是將上面8個.exe檔案改成XP相容模式。
(3)、兩個問題,第一,clean project; 第二,由於我用的onchip memory,修改system library,需要去掉suppt c++。
(4)、Your on-chip memory is too small. It looks like you'll need 64K. Make your on-chip memory bigger, or try to shrink the size of your code (use smallc library, etc.)



解決辦法(1)和(2)我反覆試驗了,沒有用。(3)和(4)只是提出了一個思路,沒有指出具體的操作步驟,但是,仔細分析,你會發現他們其實說的是一個意思,就是FPGA的片上memory太小,儲存空間不夠。再反過頭來看特權同學的pdf教程,有這麼一段描述:

七、設定軟體編譯屬性

由於正常的工程模板軟體C程式碼量比較大,而我們所分配的可用片記憶體儲器(onchip_mem)容量也不大(12KBytes),因此需要在軟體編譯屬性裡做一些簡單的設定,以裁剪程式碼量,否則編譯將無法通過。

程式碼裁剪不是無依據的隨便設定,在官方的edh_ed_handbook.pdf.Section II.3.Debugging Nios II Designs.Reducing Code Size一節有所描述。因此,根據文件中推薦的消減程式碼需要做如下設定。

看完這個,不禁豁然開朗。設定步驟如下:設定Eclipse裡面的選單NiosII / BSP Editor ,選擇當前BSP工程(如圖1所示)後確定,出現如圖2所示的對話方塊,按照上面的表格設定相關引數,儲存並點選右下角的“Generate”,完成後退出即可。

圖1

圖2

上面的設定順利完成之後,再Build Project,就OK啦。成功之後,Console欄會出現很多message,其中有兩行是:

Info: (first2_swprj.elf) 5152 Bytes program size (code + initialized data).

Info: 6896 Bytes free for stack + heap.
這就是memory的使用情況。