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

2014-8-12 07:50 1957 24 25 分类: 消费电子

开发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”,按ApplyOK退出,如下图所示:

 

t1.jpg
 

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

 

t11.jpg
 

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

 

t2.jpg
 

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

2Nios II Software Build Tools for Eclipse

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

 

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
PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户1602177 2014-8-15 15:28

感谢分享~~

用户1048913 2010-11-27 10:51

setup time 不足,可能會造成矮信號(Runt Pulse)。
相关推荐阅读
用户1037795 2014-09-29 14:57
高速LVDS接口信号完整性处理实例
  一、系统介绍 EMCCD相机由图像传感器、驱动电路、FPGA(Spartan-3)、LVDS接口和电源等组成。LVDS输出接口使用2片DS92LV1021,每片实现10bit并行数据到...
用户1037795 2014-08-20 14:15
关于Xilinx FPGA JTAG下载时菊花链路中的芯片数量
  当一个系统中含有多片(2片以上)Xilinx FPGA、CPLD或PROM(FLASH)时,可采用单一JTAG口以菊花链(Daisy Chain)形式将所有芯片串联起来实现下载编程,如下图...
用户1037795 2014-08-11 15:08
Altera QuartusII及Cyclone IV E使用经验
  1、仅C8L、IC8L、C9L使用1.0V核电压(VCCINT),其它速度的均使用1.2V核电压。 2、对于作为LVDS传输的Bank必须接2.5V的VCCIO,参考数据手册表1-20...
用户1037795 2014-08-07 14:39
Altera FPGA带NiosII内核程序的JTAG下载方法总结
  1、对于Altera FPGA,含Nios II时需要下载的文件有4种:.sof 文件,.pof 文件,.jic 文件,.elf 文件。 下载文件 ...
用户1037795 2014-08-06 10:18
Quratus II中 Nios II 硬件设计工具SOPC Builder与Qsys的区别
  1、 SOPC(System On a Programmable Chip.)即可编程片上系统,SOPC Builder是Quartus II中传统的Nios II 硬件设计工具,可以灵活...
EE直播间
更多
我要评论
1
24
关闭 站长推荐上一条 /3 下一条