新闻  |   论坛  |   博客  |   在线研讨会
NiosII程序编译时出现onchip_mem不够问题及解决方法
emesjx | 2014-08-12 07:30:53    阅读:2956   发布文章

开发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”(可读写变量数据区)等。

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

 

解决办法如下:

1、Nios II IDE

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


      

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

            


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

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

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


2、Nios II Software Build Tools for Eclipse

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


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

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

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

      

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



 

参与讨论
登录后参与讨论
推荐文章
最近访客