原创 NiosII程序编译时出现onchip_mem不够问题及解决方法

2014-8-12 07:41 5626 34 34 分类: FPGA/CPLD 文集: Nios II

 

 

开发Altera Nios II软件可使用Nios II IDE或 Nios II Software Build Tools for Eclipse(即:Nios II SBT for Eclipse),使用“Build All”或“Build Project”编译工程后有时会出现如下错误:

c:/altera/11.0/nios2eds/bin/gnu/h-i686-mingw32/bin/../lib/gcc/nios2-elf/4.1.2/../../../../nios2-elf/bin/ld.exe: xxx.elf section `.text' will not fit in region `onchip_mem'

c:/altera/11.0/nios2eds/bin/gnu/h-i686-mingw32/bin/../lib/gcc/nios2-elf/4.1.2/../../../../nios2-elf/bin/ld.exe: region `onchip_mem' overflowed by nnn bytes

collect2: ld returned 1 exit status

make: *** [xxx.elf] Error 1

其中:“xxx”是工程名,“nnn”是十进制数字,“.text”表示代码段,有时也可能是“.bss”(未初始化的变量段)、“.rodata”(只读数据区, 一般存放静态全局变量)、“.rwdata”(可读写变量数据区)等。

上述错误表示程序的代码段太大,FPG**上内存(Onchip Memory)不够,差“nnn”字节,编译出错。有时即使是一个很简单的“Hello World”程序,如果使用的FPG**内资源(内存)少,由于编译时要链接系统库(如设备驱动等),也好出现上述错误。

 

解决办法如下:

1、Nios II IDE

第一步:右击工程,点击“System Library Properties”。


                  t.jpg
      

第二步:进入C/C++ Build页面,选择优化及调式级别,Optimization level选“-0s”(按内存大小优化)、Debug level选“g3”,按Apply后OK退出,如下图所示:

 

t1.jpg

或者选择发行版(Release)去掉所有调试代码,按Apply后OK退出,如下图所示:

t11.jpg   

第三步:进入“System  Library”页面,压缩系统代码(驱动等),勾选“Program never exits”等5项,按OK退出,如下图所示:

  t2.jpg
      重新编译,一般问题就解决。

2、Nios II Software Build Tools for Eclipse

第一步:启动BSP编辑器,进入“Main | Setting | Common”页面,勾选“enable_reduced_device_drivers”和“enable_small_c_library”两项,减少系统代码,按Generate后Exit:

 

t3.jpg

 

t4.jpg

第二步:右击工程,启动属性(Properties)编辑器,点击Nios II Application Properties,Debug level选“Level3”,Optimmization level选“Size”,根据内存大小优化代码,按Apply后OK退出:

 

t5.jpg

上述两步也可合成一步:右击xxx_BSP,启动属性(Properties)编辑器,点击Nios II BSP Properties,按下图选择即可:

 

t51.jpg

重新编译,一般问题就解决。 

3、上述处理后,重新编译,如果还是不够,就只有启动SOPC Builder修改(增大)onchip_mem了,如下图所示。如果问题还是没有解决,就只有重新设计硬件,扩展外部SRAM或SDRAM了。

 

t6.jpg

 

文章评论0条评论)

登录后参与讨论
我要评论
0
34
关闭 站长推荐上一条 /2 下一条