• 【原创】解决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驱动程序时也不要勾选上。

  • 相关阅读:
    高级指令(三)
    高级指令(二)
    高级指令(一)
    高级指令(四)
    基础指令(二)
    02使用Maven构建Java项目
    03初识Maven核心概念(上)
    01Maven概述与安装
    关于sizeof与#pragma pack 以及网络上关于字节对齐的一点感想
    学习之"setjmp和longjmp函数"
  • 原文地址:https://www.cnblogs.com/oneseven/p/1550190.html
Copyright © 2020-2023  润新知