【原创】解决on_chip_memory过小的问题,解决Unable to reach errno ...的问题

【原创】解决on_chip_memory过小的问题

1、NIOS II IDE 报错


                 

    有些同学开始学
NIOS II时,使用的是ON_CHIP_MEMORY;在NIOS II IDE编译过程当中遇到以下问题:

Unable to reach errno (at 0x02081024) from the global pointer (at 0x0208aaf0) because the offset (-39628) is out of the allowed range, -32678 to 32767

或者,

Severity and Description Path Resource Location   Creation Time Id

ld: region onchip_mem is full (ep2c_onchip_led_test.elf section .text). Region needs to be 5640 bytes larger.           

ep2c_onchip_led_test     line 0         1250685275234       14679

ld: section .bss [00001aac -> 00001bbf] overlaps section .text [00001020 -> 00003607]                ep2c_onchip_led_test     line 0        

1250685275234       14682

ld: section .rodata [00001020 -> 0000104b] overlaps section .text [00001020 -> 00003607]                 ep2c_onchip_led_test    

line 0         1250685275234       14680

ld: section .rwdata [0000104c -> 00001aab] overlaps section .text [00001020 -> 00003607]                 ep2c_onchip_led_test    

line 0         1250685275234       14681 

又或者:

make -s all includes

Compiling hello_led.c...

Linking ep2c_onchip_led_test.elf...

/cygdrive/c/altera/81/nios2eds/bin/nios2-gnutools/H-i686-pc-cygwin/bin/../lib/gcc/nios2-elf/3.4.6/http://www.cnblogs.com/http://www.cnblogs.com/nios2-elf/bin/ld:

region onchip_mem is full (ep2c_onchip_led_test.elf section .text). Region needs to be 5640 bytes larger.

/cygdrive/c/altera/81/nios2eds/bin/nios2-gnutools/H-i686-pc-cygwin/bin/../lib/gcc/nios2-elf/3.4.6/http://www.cnblogs.com/http://www.cnblogs.com/nios2-elf/bin/ld:

section .rodata [00001020 -> 0000104b] overlaps section .text [00001020 -> 00003607]

/cygdrive/c/altera/81/nios2eds/bin/nios2-gnutools/H-i686-pc-cygwin/bin/../lib/gcc/nios2-elf/3.4.6/http://www.cnblogs.com/http://www.cnblogs.com/nios2-elf/bin/ld:

section .rwdata [0000104c -> 00001aab] overlaps section .text [00001020 -> 00003607]

/cygdrive/c/altera/81/nios2eds/bin/nios2-gnutools/H-i686-pc-cygwin/bin/../lib/gcc/nios2-elf/3.4.6/http://www.cnblogs.com/http://www.cnblogs.com/nios2-elf/bin/ld:

section .bss [00001aac -> 00001bbf] overlaps section .text [00001020 -> 00003607]

collect2: ld returned 1 exit status

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

Build completed in 2.609 seconds

 

2、解决方法如下

第一步:


                  
      第二步:


      第三步:

 

       

            
      重新编译,问题就解决啦。。

 

3、问题分析

程序过大,存储空间过小是导致这种错误的根本原因。按照以上设置,笔者正常编译之后的控制台给出:

 

 

 

      可以发现还有3516 Bytes的空间。

 另,如果使用SDRAM建议不要勾选small C libraryreduced devicedriversNIOS II IDE会根据选择的不同加载不同的驱动版本,从而程序代码也不相同,能实现的功能也不同。例如使用了ucosII操作系统勾选这两项将导致错误。使用altera提供的HAL驱动程序时也不要勾选上。

posted on 2009-08-19 21:53  OneSeven  阅读(3768)  评论(0编辑  收藏  举报