Board logo

标题: [求助]编译时提示onchip memory is full [打印本页]

作者: 银娃二少爷    时间: 2007-6-30 10:34     标题: [求助]编译时提示onchip memory is full

提示如下:

make -s all
Compiling hello_world.c...
../hello_world.c:20: warning: return type defaults to `int'
Linking hello_world_0.elf...
/cygdrive/d/altera/kits/nios2_60/bin/nios2-gnutools/H-i686-pc-cygwin/bin/../lib/gcc/nios2-elf/3.4.1/../../../../nios2-elf/bin/ld: region onchip_memory_0 is full (hello_world_0.elf section .text). Region needs to be 35412 bytes larger.
/cygdrive/d/altera/kits/nios2_60/bin/nios2-gnutools/H-i686-pc-cygwin/bin/../lib/gcc/nios2-elf/3.4.1/../../../../nios2-elf/bin/ld: address 0x10a8bc of hello_world_0.elf section .rwdata is not within region onchip_memory_0
/cygdrive/d/altera/kits/nios2_60/bin/nios2-gnutools/H-i686-pc-cygwin/bin/../lib/gcc/nios2-elf/3.4.1/../../../../nios2-elf/bin/ld: section .bss [00100020 -> 00100023] overlaps section .text [00100020 -> 00109a53]
/cygdrive/d/altera/kits/nios2_60/bin/nios2-gnutools/H-i686-pc-cygwin/bin/../lib/gcc/nios2-elf/3.4.1/../../../../nios2-elf/lib/mno-hw-mul/libc.a(sbrkr.o)(.text+0x14): In function `_sbrk_r':
/build/nios2/bin/nios2-gnutools/src/newlib/newlib/libc/reent/sbrkr.c:59: Unable to reach errno (at 0x00100020) from the global pointer (at 0x00112874) because the offset (-75860) is out of the allowed range, -32678 to 32767.

collect2: ld returned 1 exit status
make: *** [hello_world_0.elf] Error 1
Build completed

这是什么原因啊?如何解决呢?谢谢!


作者: caopengly    时间: 2007-6-30 12:01

“Region needs to be 35412 bytes larger”你所使用的片上ram太小了 ,还需要35412byte,你可以将你的reset地址选择为flash,这样就不会再出现这样的问题了 。
作者: hacop1982    时间: 2007-7-2 17:15

reset地址可以随便放吗,SDRAM,ON_SHIP_RAM,FLASH
作者: kzw    时间: 2007-7-3 01:35

reset地址设置不是最重要的,关键在ide中把你的ro区和rw区设置正确,尤其是ro区设置在大容量ram中。
作者: caopengly    时间: 2007-7-3 08:42

"reset地址可以随便放吗,SDRAM,ON_SHIP_RAM,FLASH"

SOPC中的reset address 指定的是最终全部软件程序代码下载到的地方,并且程序从reset address 启动。
SOPC中的exception address 指定的是系统异常处理代码存放的地方。如果exception address 和reset address 不一样,那么程序从reset address 启动后将把放在reset address 处的系统异常处理代码拷贝到exception address 。
NIOS II软件中的text address指定的是程序运行的地方。如果text address和reset address 不一样,那么程序从reset address 启动后将把放在reset address 处的普通只读程序代码拷贝到text address 。NIOS II软件中的rodata address指定的是只读数据的存放地方。如果rodata address和reset address 不一样,那么程序从reset address 启动后将把放在reset address 处的只读数据拷贝到rodata address 。
NIOS II软件中的rwdata address指定的是可读写数据的存放地方。如果rwdata address和reset address 不一样,那么程序从reset address 启动后将初始化rwdata address 处的可读写数据。


作者: kzw    时间: 2007-7-4 01:41

reset地址不重要,那是你需要从ide下直接下载到flash中需要注意这点,如果是自己转换为flash文件,就自己重新指定reset地址就可以了。对于楼主的问题,主要是程序空间不够,和reset地址没有任何关系的。
作者: airtd    时间: 2007-7-4 18:24

楼主们的解释让人学到不少..

我也遇到过。。换个sdram作为存放就好了






欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0